试图让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:远程证书是无效的例外。
答案 0 :(得分:1)
这对我有用:
Ssl = new SslOption
{
Version = SslProtocols.Tls12,
Enabled = true,
}