使用Service Bus for Windows Server
我收到以下例外情况。
消息= X.509证书CN = ***********不在受信任状态 人们的商店。 X.509证书CN = ********链建设失败。 使用的证书具有不可能的信任链 验证。更换证书或更改 certificateValidationMode。证书的签名不能 验证。
我想从我的开发盒中连接另一台计算机上的服务总线
以下是我正在使用的控制台应用程序的代码。
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!!!
我从Service Bus服务器导出了证书 使用:Get-SBAutoGeneratedCA AutoGeneratedCA.cer AutoGeneratedCA.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 建议撤销服务器有问题,因为我还导入了证书Revocatin列表我没有看到这是我的问题
我还找到了this: 哪个链接到此博客post: 我没有成功地遵循这个建议。
此博客Post:
建议安装revocationMode =“NoCheck”对此问题没有影响,他的解决方案是欺骗证书撤销列表
此博客Post: 建议添加端点行为以禁用certificateValidationMode,我做了,我仍然得到错误。
注意:当我在开发机器上托管服务总线时,一切正常。
有没有我没试过的建议?
答案 0 :(得分:4)
事实证明我没有正确导入证书......
我遵循了这些指示,一切正常......
http://msdn.microsoft.com/en-us/library/windowsazure/jj192993(v=azure.10).aspx
我想右键单击并安装证书会将它们放在错误的位置。