2016-11-24 77 views
1

试图让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:远程证书是无效的异常。

+0

你可以分享你的配置文件?此外,您是否拥有CertMgr受信任根证书文件夹中证书颁发机构的证书? –

回答

0

这个工作对我来说:

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