0

Wasabi (エンタープライズ ライブラリの自動スケーリング ブロック) を Azure ワーカー ロール内で動作させようとしています。Wasabi ワーカー ロール (Extra Small、完全な信頼) は、同じサービス内で別のワーカー ロールをスケーリングしています。同一の構成で、ローカル コンソール アプリから完全に機能します。エラーが発生すると、証明書が VM に到達しません。Azure SDK、エンタープライズ ライブラリの自動スケーリング ブロック、および Azure portal の最新バージョンを使用しています。

これらのドキュメントに基づいて、私が行った手順は次のとおりです

  1. http://msdn.microsoft.com/en-us/library/gg432987.aspxの指示に従って管理証明書を作成しました。
  2. 秘密鍵を使用して .pfx をエクスポートし、パスワードを指定しました。
  3. .cer をポータルの [設定] -> [管理証明書] セクションにアップロードしました。
  4. リストされている拇印に注意して、正しいパスワードで .pfx をクラウド サービス -> (マイ サービス) -> 証明書にアップロードしました。
  5. アプリをいくつかのインスタンスにスケールアップするいくつかの簡単なルールを作成し、新しい証明書を使用するようにサービス情報を正しく構成しました。XML ファイルは BLOB ストレージにあります。この正確な構成は、コンソール アプリのローカル マシンで正常に動作します。
  6. 正しい証明書名と拇印を使用して、Wasabi ロールの構成にエントリを追加しました。CurrentUser\My ストアを使用するように設定しました。.csdef と .cscfg ファイルが正しく更新されていることを確認しました。
  7. 発行ツールを使用して、サービスを Azure のステージングにデプロイします。証明書の構成設定が、役割の構成設定に正しく表示されます。
  8. アプリをスケーリングしません。トレース エントリを確認すると、管理 API にアクセスしようとすると例外が発生します。適切なサブスクリプションにアクセスしようとしており、適切なストアで正しい証明書の拇印を見つけようとしているため、構成が正しく読み込まれています。そのストアでその拇印を持つ証明書が見つからないと主張しています。

LocalMachine\My ストア (ロール証明書設定およびサービス情報ストア XML で構成) を試したところ、 Azure WASABi SecurityNegotiationExceptionに記載されている別の例外エラーが発生しました。その修正は最終的にCurrentUserに行くことだったので、ここでは役に立ちません。

CurrentUser\LocalMachine とさまざまなストアの他の多くの組み合わせを試しましたが、すべての CurrentUser の場所で証明書が見つからず、すべての LocalMachine ストアで他の例外が発生しました。

ロール設定、ポータル (証明書ページ)、およびサービス情報ファイルの拇印をトリプルチェックしたところ、すべて一致しました。

次に、リモート デスクトップを有効にして Wasabi ロール インスタンスにログインし、MMC を使用して、ローカル マシンと現在のユーザーの両方の証明書構成を確認しました。ロール証明書の設定で LocalMachine ストアを選択すると、LocalMachine ストアに証明書が表示され、証明書がサービスに正しくインストールされ、拇印が一致することがわかります。CurrentUser ストアが選択されている場合、証明書はどこにも表示されません。これは、RDP で使用されるユーザーがサービスと同じユーザーではないことが原因である可能性がありますが、エラーと一致します。

つまり、要約すると:

  1. 証明書が正しく構成され、ポータルにインストールされました (サブスクリプションの管理証明書とサービス証明書)。
  2. どうやら、Wasabi ロールには、LocalMachine の場所ではなく、CurrentUser の場所を使用する必要があるようです (リンクされた SO の質問に従って)。
  3. CurrentUser にインストールしようとすると、証明書が VM に配置されません。少なくとも、ロールがそれを見つけることができる場所には配置されません。

何か案は?

ありがとう!

4

1 に答える 1

3

このSO POSTに対する私の回答を参照してください。証明書は LocalMachine にある必要があり、SDK 1.8 と Server2012 ロールの初期化で構成が変更されたため、ネットワーク サービスに証明書の秘密キーへのアクセスを許可するには、昇格されたアクセス許可で worker ロールを実行する必要があります。ServiceDefinition.csdef を編集

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="blah" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2012-10.1.8">
  <WorkerRole name="blah" vmsize="Small">
    <Runtime executionContext="elevated" />
    ...      
   </WorkerRole>
</ServiceDefinition>
于 2013-02-12T22:54:22.967 に答える