RabbitMQ 公开的公钥中包含的证书链

我有 ac# .net 客户端使用来自使用 TLS 保护的 RabbitMQ 实例(使用 RabbitMQ.Client)的消息。我使用自签名证书使一切正常。

我们已从经认可的 CA 购买了通配符证书以供将来使用。该证书实际上已由根 CA 本身信任的中间机构签署。

因为中间 CA 不会被客户端机器信任(证书不会安装到本地机器证书存储中),我们下载了一个 PEM 文件,其中包含构成信任链的所有证书。但是,.net 客户端不会验证此证书,因为它无法建立信任链而失败。

我环顾四周,没有发现任何内容表明 .net 无法验证本身包含多个证书的 PEM 证书。如果我将自定义委托分配给 RabbitMQ ConnectionFactory 的 CertificateValidationCallback 属性,我可以看到证书链仅包含一个证书,即由中间 CA 签名的证书。

客户端最终将部署到数百台机器上,因此我们宁愿不必将中间证书部署到所有机器上,然后继续管理它们。我知道我可以通过将 AcceptablePolicyErrors 属性设置为 SslPolicyErrors.RemoteCertificateChainErrors 来设置关闭链验证,但在我看来这让事情变得不那么安全。

所以,我在这里有两个主要问题:

  1. .net 加密验证是否根本不支持包含链中所有其他证书的证书(至少如果该证书是 PEM)?

  2. 有没有办法解决这个问题?

我正在使用 .net 4.5.2,尽管在 .net 4.6.2 和 .net 4.7.1 中也会出现同样的问题。

我在 Windows 7 机器上运行它。RabbitMQ 节点运行在 Windows 2012 服务器上。


慕盖茨4494581
浏览 184回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP