4

Windows Server のサービス バスの使用

次の例外が発生します。

Message=The X.509 certificate CN=************ は信頼できるユーザー ストアにありません。X.509 証明書 CN=******** チェーンの構築に失敗しました。使用された証明書には、検証できない信頼チェーンがあります。証明書を置き換えるか、certificateValidationMode を変更してください。証明書の署名を検証できません。

Dev Box から別のコンピューターの Service Bus に接続しようとしています

これが私が使用しているコンソールアプリのコードです。

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 AutoGeneratedCA.cer AutoGeneratedCA.cr1 を使用して、Service Bus サーバーから証明書をエクスポートしました。

次に、デフォルト設定を使用して両方のファイルを開発ボックスにインポートしました。

次の項目を 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>

認証に成功し、キューが存在するかどうかを確認して削除し、新しいキューを作成できます。

解決策を探している ときに、証明書失効リストもインポートしたため、失効サーバーに問題があったことを示唆しているこれを見つけました。これが私の問題であることはわかりませ

私もこれを見つけました:これはこのブログ投稿にリンクされています:私は提案に従いましたが成功しませんでした。

このブログ投稿:
revocationMode="NoCheck" を設定してもこの問題には影響がなく、彼の解決策は証明書失効リストを偽装することでした。

このブログ投稿: CertificateValidationMode を無効にするエンドポイントの動作を追加したことを提案しましたが、それでもエラーが発生します。

注: 開発マシンで Service Bus をホストすると、すべてが機能します。

私が試したことのない提案はありますか?

4

1 に答える 1

4

証明書を正しくインポートしていなかったことがわかりました...

これらの指示に従ったところ、すべてが機能しました..

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

証明書を右クリックしてインストールすると、それらが間違った場所に置かれたと思います。

于 2012-10-25T16:14:00.107 に答える