RabbitMq Broker不接受PFX

时间:2017-02-22 16:48:16

标签: c# ssl openssl rabbitmq tls1.2

使用RabbitMq生成的证书,SSL超过OpenSSL的工作解决方案后,我的客户要求我不能使用OpenSSL生成证书。服务器管理员通过IIS创建了证书链。

我们在创建后对证书进行了以下操作:

  1. 将服务器证书导出到PFX并解压缩 cert.pem cert.key
  2. 将客户端证书导出到PFX并解压缩 cert.pem cert.key
  3. 将根CA导出到 rootca.pem
  4. 更新了RabbitMq
  5. 的配置文件

    为了测试连接和证书是否已正确创建,我们浏览了Troubleshooting Steps here.

    一切都顺利通过。我们可以使用客户端的 cert.pem cert.key 按预期在端口openssl s_client上使用5671进行连接的 client.pfx 即可。我们可以看到在管理控制台和日志中建立的连接,它们来回通信。

    现在,在.NET客户端中使用 client.pfx ,我们收到有关证书验证的错误:

      

    MassTransit.RabbitMqTransport.RabbitMqConnectionException:连接失败:admin @ mitvs-atm01:5671 / ---> RabbitMQ.Client.Exceptions.BrokerUnreachableException:没有指定的端点可以访问---> System.Security.Authentication.AuthenticationException:根据验证过程,远程证书无效。

    如何使用 client.pfx 收到错误,但在使用 cert.pem cert.key 我是从中提取出来的?

2 个答案:

答案 0 :(得分:1)

此错误消息表示客户端无法验证服务器证书。您的问题可能与 rootca.pem 在您客户的计算机上不受信任有关。遵循相应的操作系统指南,使根CA证书受信任。

答案 1 :(得分:1)

使用dynamic通过OpenSSL测试连接时,它不执行或非常基本的验证,.NET应用程序可以提供应用任何逻辑的功能。最常见的验证类型是将证书的CN与服务器的主机名匹配,但实际上可以是任何内容。

因此,即使在受信任的根CA上,CN仍然需要匹配使用s_client命令未获取的主机名。

重新生成证书并修改问题。

此外,您可以有效地添加以下代码,它将忽略此错误:

OpenSSL

请注意 - 忽略错误会带来使您的系统暴露于MITM攻击的风险(当然,除非您实施的自己的验证逻辑不是基于CN /主机名匹配)。