【发布时间】:2017-04-08 06:48:10
【问题描述】:
尝试让 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)。
关于下一步看哪里的任何指示?
更新:找到设置 TLS 属性的方法: factory.Ssl.Version = SslProtocols.Tls12;
但现在我得到一个 System.Security.Authentication.AuthenticationException: The remote certificate is invalid 异常。
【问题讨论】:
-
你能分享你的配置文件吗?另外,您是否在 CertMgr 的 Trusted Root Certification 文件夹中拥有证书颁发机构的证书