【发布时间】:2012-10-24 16:37:18
【问题描述】:
使用Service Bus for Windows Server
我得到以下异常。
Message=X.509 证书 CN=*********** 不在受信任的 人商店。 X.509 证书 CN=********** 建链失败。 所使用的证书具有无法被信任的信任链 已验证。更换证书或更改 证书验证模式。证书的签名不能 已验证。
我正在尝试从我的 Dev Box 连接到另一台计算机上的服务总线
这是我正在使用的控制台应用程序的代码。
ServicePointManager.ServerCertificateValidationCallback =
new RemoteCertificateValidationCallback(ValidateServerCertificate);
ServicePointManager.CheckCertificateRevocationList = false;
NamespaceManager namespaceManager = NamespaceManager.Create();
MessagingFactory messagingFactory = MessagingFactory.Create();
if (namespaceManager.QueueExists(QueueName))
{
namespaceManager.DeleteQueue(QueueName);
}
namespaceManager.CreateQueue(QueueName);
string QueueName = "ServiceBusQueueSample";
QueueClient myQueueClient = messagingFactory.CreateQueueClient(QueueName);
BrokeredMessage sendMessage = new BrokeredMessage("Hello World !");
myQueueClient.Send(sendMessage); <---- !!!Exception!!!
我从服务总线服务器导出了证书 使用:Get-SBAutoGeneratedCA 自动生成的CA.cer 自动生成CA.cr1
然后我使用默认设置将这两个文件导入我的开发箱。
我已将以下项目添加到我的 app.config。
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior >
<clientCredentials>
<serviceCertificate>
<authentication certificateValidationMode="None"
revocationMode="NoCheck" />
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
<microsoft.identityModel>
<service>
<certificateValidation certificateValidationMode="None" />
</service>
</microsoft.identityModel>
我能够成功验证并检查队列是否存在并将其删除然后创建一个新的。
在寻找解决方案时,我找到了this 提示吊销服务器有问题,因为我还导入了证书吊销列表我没有看到这是我的问题
我还找到了this: 链接到这个博客post: 我按照建议没有成功。
这个博客Post:
建议设置 revocationMode="NoCheck" 对这个问题没有影响,他的解决方案是欺骗证书吊销列表
这个博客Post: 建议添加端点行为来禁用certificateValidationMode,我做了,但我仍然收到错误。
注意:当我在我的开发机器上托管服务总线时,一切正常。
有什么我没有尝试过的建议吗?
【问题讨论】:
-
另一种将解决此问题但具有安全隐患的方法:stackoverflow.com/a/39415887/5869
标签: c# x509certificate servicebus