7

HTTPS エンドポイントを WebRole に追加しましたが、Azure Emulator を実行しようとすると、次の警告が表示されます。これにより、コンピューティング エミュレーターが停止し、デバッガーが停止します。

Warning: The SSL certificate 'Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption' for endpoint 'HttpsIn' of role 'MyProj.Web' was not found in the local machine's certificate store.

この証明書は、HTTPS エンドポイントとは関係ありません。また、ローカル マシンの証明書ストアにはありません (すべきではありません) 。CurrentUser 証明書ストアには存在します (確認済み) 何が起こるかを確認するために、ServiceConfiguration でこの証明書への参照を完全に削除しようとしましたが、自動的に再追加され続けます。

どんな助けでも大歓迎です。

編集:

明確にするために、Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption 証明書を SSL 証明書として使用しようとしているわけではありません。HTTPS エンドポイントのローカル マシン ストアに別の自己署名証明書を正常にセットアップしました。

ServiceDefinition.csdef

    <Bindings>
      <Binding name="Endpoint1" endpointName="Endpoint1" />
      <Binding name="HttpsIn" endpointName="HttpsIn" />
    </Bindings>
    ...
    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="http" port="80" />
      <InputEndpoint name="HttpsIn" protocol="https" port="443" certificate="AzureSSL" />
    </Endpoints>
    ...
    <Certificates>
      <Certificate name="AzureSSL" storeLocation="LocalMachine" storeName="My"/>
    </Certificates>

ServiceConfiguration.Local.cscfg

<Certificates>
  <Certificate name="Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption" thumbprint="xxxxxxxxxx" thumbprintAlgorithm="sha1" />
  <Certificate name="AzureSSL" thumbprint="xxxxxxxxxx" thumbprintAlgorithm="sha1" />
</Certificates>
4

4 に答える 4

9

SDK 1.8 が csdef ファイルに追加<Import moduleName="RemoteAccess" />されるため、WebRole は RemoteAccess 証明書設定を追加し、LocalMachine で証明書を探します。この問題を解決するには:

  • すべての "Microsoft.WindowsAzure.Plugins.RemoteAccess. * " を (ローカルとクラウドの) .cscfg ファイルから削除します。
  • 両方の .cscfg ファイルで "Certificate name="Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption" を削除します
  • csdef ファイルから<Import moduleName="RemoteAccess" /> andを削除します。<Import moduleName="RemoteForwarder" />
  • 保存して再コンパイルします。後でリモート デスクトップをアクティブ化する必要がある場合は、この記事でプロセスについて説明します。

または、RDP 証明書を LocalMachine ストアに追加することもできます。

于 2013-02-08T16:37:02.450 に答える
1

さて、2つのこと:

  • 一般に、証明書は HTTPS エンドポイントと多くの関係があります。HTTPS エンドポイントにも証明書が必要だからですよね?
  • エラー メッセージから、リモート デスクトップのパスワード暗号化証明書を HTTPS エンドポイントにも使用するように選択したことが明らかです。

後者はまったく悪くありませんが、すべての証明書と、どの証明書が何に使用されているかを認識する必要があります。

まず、Azure ロール インスタンスでリモート デスクトップを有効にするには、X.509 証明書が必要です。構成ファイル(csdef)に証明書の拇印を指定することで構成されます。RDP アカウントのパスワードはその証明書で暗号化されているため、これが必要です。このパスワードの暗号化は、パッケージ化プロセス (より正確には、リモート デスクトップ ウィザード プロセス) の一部です。パッケージを展開するWindows Azure クラウド サービスにその証明書を個別にアップロードする必要があります。また、その証明書をローカル ユーザーのストアに格納します。

2 番目の証明書は HTTPS 用です。また、拇印と場所としても記述されます。ただし、HTTPS 証明書は通常、local machineストアではなくcurrent userストアにあります。この X.509 証明書も、Cloud Service に個別にアップロードする必要があり、そこに存在する必要があります。Windows Azure Cloud Service の HTTPS エンドポイントを構成する方法については、こちらを参照してください。パッケージ化が正常に機能するには、HTTPS エンドポイント証明書がローカル マシン ストア (より正確には Web ホスティング ストア - IIS マネージャーを開いて次の場所に移動する場合) にある必要があります。Server Certificates、そこで証明書を確認できる必要があります)。これは、HTTPS 証明書の想定される場所です。そのため、パッケージ化ではそこにある必要があります。そしてそれが、それが見つからないと不平を言う理由です。パスワード暗号化証明書 (HTTPS にも使用することを指定した) がローカル マシンのストアにないためです。

最後になりましたが、パッケージで使用される証明書propertiesは、クラウド サービス プロジェクトの [証明書] セクションで構成されます。

推奨される読書:

于 2013-02-08T08:00:03.793 に答える