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)すべての環境で同じ証明書を使用します(個人的にはお勧めしません)。