mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-21 12:16:02 +08:00
added ability to specify tls protocol version
This commit is contained in:
@@ -20,8 +20,8 @@ namespace MQTTnet.Implementations
|
|||||||
private readonly CancellationToken _cancellationToken;
|
private readonly CancellationToken _cancellationToken;
|
||||||
private readonly AddressFamily _addressFamily;
|
private readonly AddressFamily _addressFamily;
|
||||||
private readonly MqttServerTcpEndpointBaseOptions _options;
|
private readonly MqttServerTcpEndpointBaseOptions _options;
|
||||||
|
private readonly MqttServerTlsTcpEndpointOptions _tlsOptions;
|
||||||
private readonly X509Certificate2 _tlsCertificate;
|
private readonly X509Certificate2 _tlsCertificate;
|
||||||
|
|
||||||
private Socket _socket;
|
private Socket _socket;
|
||||||
|
|
||||||
public MqttTcpServerListener(
|
public MqttTcpServerListener(
|
||||||
@@ -36,6 +36,11 @@ namespace MQTTnet.Implementations
|
|||||||
_tlsCertificate = tlsCertificate;
|
_tlsCertificate = tlsCertificate;
|
||||||
_cancellationToken = cancellationToken;
|
_cancellationToken = cancellationToken;
|
||||||
_logger = logger.CreateChildLogger(nameof(MqttTcpServerListener));
|
_logger = logger.CreateChildLogger(nameof(MqttTcpServerListener));
|
||||||
|
|
||||||
|
if (_options is MqttServerTlsTcpEndpointOptions tlsOptions)
|
||||||
|
{
|
||||||
|
_tlsOptions = tlsOptions;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public event EventHandler<MqttServerAdapterClientAcceptedEventArgs> ClientAccepted;
|
public event EventHandler<MqttServerAdapterClientAcceptedEventArgs> ClientAccepted;
|
||||||
@@ -75,7 +80,7 @@ namespace MQTTnet.Implementations
|
|||||||
if (_tlsCertificate != null)
|
if (_tlsCertificate != null)
|
||||||
{
|
{
|
||||||
sslStream = new SslStream(new NetworkStream(clientSocket), false);
|
sslStream = new SslStream(new NetworkStream(clientSocket), false);
|
||||||
await sslStream.AuthenticateAsServerAsync(_tlsCertificate, false, SslProtocols.Tls12, false).ConfigureAwait(false);
|
await sslStream.AuthenticateAsServerAsync(_tlsCertificate, false, _tlsOptions.SslProtocol, false).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
_logger.Verbose("Client '{0}' accepted by TCP listener '{1}, {2}'.",
|
_logger.Verbose("Client '{0}' accepted by TCP listener '{1}, {2}'.",
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
|
using System.Security.Authentication;
|
||||||
|
|
||||||
namespace MQTTnet.Server
|
namespace MQTTnet.Server
|
||||||
{
|
{
|
||||||
@@ -80,6 +81,12 @@ namespace MQTTnet.Server
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public MqttServerOptionsBuilder WithEncryptionSslProtocol(SslProtocols value)
|
||||||
|
{
|
||||||
|
_options.TlsEndpointOptions.SslProtocol = value;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public MqttServerOptionsBuilder WithoutEncryptedEndpoint()
|
public MqttServerOptionsBuilder WithoutEncryptedEndpoint()
|
||||||
{
|
{
|
||||||
_options.TlsEndpointOptions.IsEnabled = false;
|
_options.TlsEndpointOptions.IsEnabled = false;
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
namespace MQTTnet.Server
|
using System.Security.Authentication;
|
||||||
|
|
||||||
|
namespace MQTTnet.Server
|
||||||
{
|
{
|
||||||
public class MqttServerTlsTcpEndpointOptions : MqttServerTcpEndpointBaseOptions
|
public class MqttServerTlsTcpEndpointOptions : MqttServerTcpEndpointBaseOptions
|
||||||
{
|
{
|
||||||
@@ -8,5 +10,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
public byte[] Certificate { get; set; }
|
public byte[] Certificate { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public SslProtocols SslProtocol { get; set; } = SslProtocols.Tls12;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user