Skip to content

Commit 79eb9ac

Browse files
committed
Force to use TLS1.3 and set explicit cipher suites
1 parent 10c95d1 commit 79eb9ac

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

src/S7CommPlusDriver/Net/S7Client.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,16 @@ public int SslActivate()
125125
}
126126
m_ptr_ssl_method = Native.ExpectNonNull(Native.TLS_client_method());
127127
m_ptr_ctx = Native.ExpectNonNull(Native.SSL_CTX_new(m_ptr_ssl_method));
128+
// TLS 1.3 forcieren, da wegen TLS on IsoOnTCP bekannt sein muss, um wie viele Bytes sich die verschlüsselten
129+
// Daten verlängern um die Pakete auf S7CommPlus-Ebene entsprechend zu fragmentieren.
130+
// Die Verlängerung geschieht z.B. durch Padding und HMAC. Bei TLS 1.3 existiert mit GCM kein Padding und verlängert sich immer
131+
// um 16 Bytes. Da auch TLS_CHACHA20_POLY1305_SHA256 zu den TLS 1.3 CipherSuite zählt, explizit die anderen setzen.
132+
Native.SSL_CTX_ctrl(m_ptr_ctx, Native.SSL_CTRL_SET_MIN_PROTO_VERSION, Native.TLS1_3_VERSION, IntPtr.Zero);
133+
ret = Native.SSL_CTX_set_ciphersuites(m_ptr_ctx, "TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256");
134+
if (ret != 1)
135+
{
136+
return S7Consts.errOpenSSL;
137+
}
128138
m_sslconn = new OpenSSLConnector(m_ptr_ctx, this);
129139
m_sslconn.ExpectConnect();
130140

0 commit comments

Comments
 (0)