Allow to change cipher suite (#1381)

* Allow to change the used Cipher Suite

* Also added cipher suite to the mqtt client part

* Added ConfigureAwait
This commit is contained in:
Tim
2022-04-21 21:02:39 +02:00
committed by GitHub
parent 2d9ae0576b
commit 9e47a0985b
4 changed files with 26 additions and 6 deletions
@@ -29,6 +29,8 @@ namespace MQTTnet.Client
#if NETCOREAPP3_1 || NET5_0_OR_GREATER
public List<System.Net.Security.SslApplicationProtocol> ApplicationProtocols { get; set; }
public System.Net.Security.CipherSuitesPolicy CipherSuitesPolicy { get; set; }
#endif
#if NET48 || NETCOREAPP3_1 || NET5 || NET6
@@ -104,7 +104,8 @@ namespace MQTTnet.Implementations
ClientCertificates = LoadCertificates(),
EnabledSslProtocols = _tcpOptions.TlsOptions.SslProtocol,
CertificateRevocationCheckMode = _tcpOptions.TlsOptions.IgnoreCertificateRevocationErrors ? X509RevocationMode.NoCheck : X509RevocationMode.Online,
TargetHost = _tcpOptions.Server
TargetHost = _tcpOptions.Server,
CipherSuitesPolicy = _tcpOptions.TlsOptions.CipherSuitesPolicy
};
await sslStream.AuthenticateAsClientAsync(sslOptions, cancellationToken).ConfigureAwait(false);
@@ -178,11 +178,24 @@ namespace MQTTnet.Implementations
{
var sslStream = new SslStream(stream, false, _tlsOptions.RemoteCertificateValidationCallback);
await sslStream.AuthenticateAsServerAsync(
_tlsCertificate,
_tlsOptions.ClientCertificateRequired,
_tlsOptions.SslProtocol,
_tlsOptions.CheckCertificateRevocation).ConfigureAwait(false);
#if NETCOREAPP3_1 || NET5_0_OR_GREATER
await sslStream.AuthenticateAsServerAsync(
new SslServerAuthenticationOptions()
{
ServerCertificate = _tlsCertificate,
ClientCertificateRequired = _tlsOptions.ClientCertificateRequired,
EnabledSslProtocols = _tlsOptions.SslProtocol,
CertificateRevocationCheckMode = _tlsOptions.CheckCertificateRevocation ? X509RevocationMode.Online : X509RevocationMode.NoCheck,
EncryptionPolicy = EncryptionPolicy.RequireEncryption,
CipherSuitesPolicy = _tlsOptions.CipherSuitesPolicy
}).ConfigureAwait(false);
#else
await sslStream.AuthenticateAsServerAsync(
_tlsCertificate,
_tlsOptions.ClientCertificateRequired,
_tlsOptions.SslProtocol,
_tlsOptions.CheckCertificateRevocation).ConfigureAwait(false);
#endif
stream = sslStream;
@@ -24,5 +24,9 @@ namespace MQTTnet.Server
public bool CheckCertificateRevocation { get; set; }
public SslProtocols SslProtocol { get; set; } = SslProtocols.Tls12;
#if NETCOREAPP3_1 || NET5_0_OR_GREATER
public System.Net.Security.CipherSuitesPolicy CipherSuitesPolicy { get; set; }
#endif
}
}