无法验证Windows Server证书的Service Bus

时间:2012-10-24 16:37:18

标签: c# x509certificate servicebus

使用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,我做了,我仍然得到错误。

注意:当我在开发机器上托管服务总线时,一切正常。

有没有我没试过的建议?

1 个答案:

答案 0 :(得分:4)

事实证明我没有正确导入证书......

我遵循了这些指示,一切正常......

http://msdn.microsoft.com/en-us/library/windowsazure/jj192993(v=azure.10).aspx

我想右键单击并安装证书会将它们放在错误的位置。