RabbitMQ .NET客户端不使用TLS v1.2

时间:2016-11-24 05:02:42

标签: c# .net ssl rabbitmq

试图让RabbitMQ连接到TLS v1.2。使用Java客户端和.NET Core客户端。 Java客户端正在运行,但.NET正在推迟。以下是我的出厂设置:

var factory = new ConnectionFactory
{
   HostName = hostName,
   VirtualHost = vHost,
   UserName = username,
   Password = password,
   Port = 5671,
   Ssl = {Enabled = true}
};

我遇到了这个例外: System.Security.Authentication.AuthenticationException:对SSPI的调用失败,请参阅内部异常。 ---> Interop + OpenSsl + SslException:SSL握手因OpenSSL错误而失败 - SSL_ERROR_SSL。 ---> Interop + Crypto + OpenSslCryptographicException:错误:1409442E:SSL例程:SSL3_READ_BYTES:tlsv1警报协议版本

查看异常消息的尾部,看来TLS版本可能已经老了,但我安装了最新版本的RabbitMQ - 4.1.1

挖掘ConnectionFactory类的RabbitMQ源,但找不到与设置TLS版本相关的任何内容。在我的Java应用程序中,它可以正常工作:factory.useSslProtocol(" TLSv1.2");

在另一个SO线程中看到旧版Erlang可能是原因,但我安装了最新版本(8.1)。

关于下一步要去哪里的指示?

UPDATE:设置TLS属性的方式: factory.Ssl.Version = SslProtocols.Tls12;

但是现在我收到了System.Security.Authentication.AuthenticationException:远程证书是无效的例外。

1 个答案:

答案 0 :(得分:1)

这对我有用:

Ssl = new SslOption
{
    Version = SslProtocols.Tls12,
    Enabled = true,
}