8

Studio から Azure に Web ロールと Worker ロールをデプロイするために使用する、長年にわたる Azure Cloud Service プロジェクトがあります。クラウド サービス定義ファイルとクラウド構成ファイルには、クラウド サービスにアップロードされた証明書に関する情報が含まれています。したがって、サービス定義では次のようになります。

<Certificates>
  <Certificate name="cert" storeLocation="LocalMachine" storeName="My" />
  <Certificate name="encryption" storeLocation="LocalMachine" storeName="My" />
</Certificates>

およびサービス構成で:

<Certificates>
  <Certificate name="cert" thumbprint="[hidden]" thumbprintAlgorithm="sha1" />
  <Certificate name="encryption" thumbprint="[hidden]" thumbprintAlgorithm="sha1" />
</Certificates>

これらの構成と証明書を使用して、同じクラウド サービスに長い間問題なく発行してきました。

今、Visual Studio 2010 sp1 用の Azure 1.7 SDK (2012 年 6 月) にアップグレードしました。クラウド サービス プロジェクトをアップグレードすると [[プロパティ] で [アップグレード] をクリック] すると、明らかな証明書エラーが原因でデプロイできなくなります。

1:25:28 PM - 接続中... 1:25:33 PM - エラー: 証明書: 'cert' with Thumbprint: for Role: My.Web はクラウド サービス: My Test NC にアップロードされていません。1:25:33 PM - エラー: 証明書: 拇印付きの「暗号化」: 役割: My.Web はクラウド サービスにアップロードされていません: My Test NC。

エラーに拇印がまったく表示されていないことに注意してください。セキュリティ上の理由から、ここでは拇印を削除していません。

プロジェクト ファイルを編集し、1.7 から 1.6 に変更する以外に何も変更しないと、Studio からのデプロイは再び完全に機能します。

Visual Studio sp1 と Azure 1.7 に問題があるようですが、他の誰かが同様の問題を抱えているという証拠は見つかりませんでした。

更新: Microsoft と話をしたところ、再現手順について少なくとも明確になりました。

  • 複数のサービス構成が必要です (「開発」と「テスト」など)。
  • 異なる環境には異なる証明書 (したがって、異なる拇印) が必要です。

おそらく開発マシンに本番証明書を保存したくないので(特に、開発マシンに暗号化された本番値を復号化する機能を持たせたくないためです-たとえば、開発用ラップトップが紛失した場合を考えてください)、さまざまな証明書さまざまな環境で、標準的なベスト プラクティスに沿っているようです。

したがって、この時点で、Microsoft はこれを修正する必要があるかどうかを検討します。それまでの間、Azure 1.7 SDK の回避策は次のとおりです。(1) Studio から "発行" を使用しないでください。(2) 複数のサービス構成を使用しないでください。または(3)すべての環境で同じ証明書を使用します(個人的にはお勧めしません)。

4

3 に答える 3

1

「答え」は、同じプロジェクトに複数のcscfgファイルがあり、同じ証明書名に異なる拇印を使用している場合(明らかにやりたいと思う可能性が高い)、この問題が発生することです。

<Certificates>
    <Certificate name="cert" thumbprint="[hidden]" thumbprintAlgorithm="sha1" />
    <Certificate name="encryption" thumbprint="[hidden]" thumbprintAlgorithm="sha1" />
</Certificates>

したがって、[hidden] の値が、たとえば dev、test、および live の cscfg ファイルで異なる場合、それらのいずれかに公開しようとすると、前述のエラーが発生します (たとえば、test.)。

構成の管理と削除を使用して開発用とライブ用のcscfgファイルを削除し、残りのテスト構成ファイルを使用して公開しようとすると、公開は機能します(少なくとも私にとっては.)

これは欠陥のようです。

于 2012-06-30T20:27:10.103 に答える
1

この問題が見られる別のケースが見つかりました。VS2012.2 では、証明書の拇印は小文字ですが、Azure 管理 API では大文字で要求されているようです。これは管理ポータル/API 側のバグです。これは、拇印がどのような場合でも使用できるためです。ケース自体には情報コンテンツがないため、チェックを実行する側は大文字と小文字を区別しない必要があります (私が信じている Azure ファブリック コントローラー)。

これを示す画像をアップロードしています (フル解像度の画像については、ここをクリックしてください) 。

ここに画像の説明を入力

于 2013-06-19T23:30:10.743 に答える
0

Kent さん、あなたが提供した回避策に加えて、ビルド ステップ中に構成ファイルを変換することもできます。Phil Hoff は、http://blogs.msdn.com/b/philliphoff/archive/2012/07/02/transform-windows-azure-service-model-files-during-packaging で、これを行う方法について説明しているブログ投稿を行っています。 aspx

于 2012-07-19T14:21:56.883 に答える