RabbitMQ .NET客户端不能使用TLS v1.2
问题描述:
试图让RabbitMQ与TLS v1.2搭配使用。使用Java客户端和.NET Core客户端。 Java客户端正在工作,但.NET正在推动。这里是我的出厂设置:RabbitMQ .NET客户端不能使用TLS v1.2
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。 --->互操作+加密+ OpenSslCryptographicException:错误:1409442E:SSL例程:SSL3_READ_BYTES:警惕的TLSv1协议版本
在异常消息的非常尾部看它看来,TLS版本可能是老了,但我有安装了最新版本的RabbitMQ - 4.1.1
挖掘出ConnectionFactory类的RabbitMQ源代码,但找不到与设置TLS版本相关的任何内容。在我的Java应用程序中,它的工作原理如下:factory.useSslProtocol(“TLSv1.2”);
在另一个SO线程中看到旧版本的Erlang可能是原因,但我安装了最新版本(8.1)。
任何指向下一个目录的指针?
更新:开始设置TLS属性的方式: factory.Ssl.Version = SslProtocols.Tls12;
但现在我得到一个System.Security.Authentication.AuthenticationException:远程证书是无效的异常。
答
这个工作对我来说:
Ssl = new SslOption
{
Version = SslProtocols.Tls12,
Enabled = true,
}
你可以分享你的配置文件?此外,您是否拥有CertMgr受信任根证书文件夹中证书颁发机构的证书? –