【问题标题】:RabbitMQ .NET Client Not Working with TLS v1.2RabbitMQ .NET 客户端不使用 TLS v1.2
【发布时间】: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 文件夹中拥有证书颁发机构的证书

标签: c# .net ssl rabbitmq


【解决方案1】:

这对我有用:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    • 1970-01-01
    • 2022-08-09
    • 1970-01-01
    • 2015-12-19
    • 2017-02-22
    • 1970-01-01
    相关资源
    最近更新 更多