2016-11-24 35 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, 
}