问题描述
我正在尝试将(dotnet 客户端)连接到 RabbitMQ。我从 RabbitMQ 配置文件中启用了 Peer 验证选项。
_factory = new ConnectionFactory
{
HostName = Endpoint,UserName = Username,Password = Password,Port = 5671,VirtualHost = "/",AutomaticRecoveryEnabled = true
};
sslOption = new SslOption
{
Version = SslProtocols.Tls12,Enabled = true,AcceptablePolicyErrors = System.Net.Security.SslPolicyErrors.RemoteCertificateChainErrors
| System.Net.Security.SslPolicyErrors.RemoteCertificateNameMismatch,ServerName = "",// ?
Certs = X509CertCollection
}
以下是我通过“X509CertCollection”传递的客户认证详细信息。
CertSubject: CN=myhostname,O=MyOrganizationName,C=US // myhostname 是我的客户端主机的名称。
因此,如果我将“myhostname”值传递给 sslOption.ServerName,它会起作用。如果我传递一些垃圾值,它仍然有效。
根据 RabbitMQ 的文档,这两个值应该匹配,即 certCN 值和 serverName。此处 sslOption.ServerName 的值是多少?为什么?
解决方法
我的坏。我找到了原因。发布,因为它可能会帮助某人。 原因:因为我设置了一个策略“System.Net.Security.SslPolicyErrors.RemoteCertificateNameMismatch”。