5

現在、Windows Azure 向けのホステッド サービスの自動展開プロセスに取り組んでいます。.cspkgおよびファイルの作成は、.cscfgへの呼び出しを使用して完全に機能しますmsbuild。現在、管理 REST API を使用してこれらのファイルを Azure にデプロイする小さな .NET コンソール アプリを作成しています。

API自体には問題ありません。管理証明書の 1 つを使用して API にリクエストを送信できます。.cspkgファイルを Azure BLOB ストレージにアップロードしてから、 Upgrade Deployment. しかし、試行するたびに、拇印 xy を持つ証明書が見つからないという「400 Bad Request」応答が返されます。この証明書は、カスタム ドメイン (DNS CNAME) の HTTPS に使用している SSL 証明書 (管理証明書ではありません) です。

そして今、すべてが面白くなります:

Visual Studio で「発行」コマンドを使用してファイルをデプロイすると、問題はありません。( VS と出力の.cscfg/ファイルを比較しました。いくつかの GUID を除いて、それらは同一です)。さらに、ブラウザで Silverlight Management を使用すると、API を使用してアップロードできなかった生成ファイルをアップロードすることもできます。.cspkgmsbuild

呼び出しを使用してすべての証明書のリストを取得するList Certificatesと、欠落していると言われている証明書が明らかにそこにあります。呼び出しを使用してそのデータを取得することもできますGet Certificate

では、なぜ Azure は、Upgrade Deployment呼び出しを使用しているときに証明書が見つからなかったと私に言い続けるのでしょうか? 誰かが似たようなことを経験しましたか? 誰かが私ヒントを持っていますか? 前もって感謝します。

PS: API を使用すると、Azure は次のように言います。

<Error xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    <Code>BadRequest</Code>
    <Message>The certitficate with thumbprint 7b232c4a2d6e3deadbeef120d5dbc1fe8049fbea was not found.</Message>
</Error>

PPS: はい、応答の単語はcertitficateではなくcertificateです。

4

3 に答える 3

4

わかりました。API 呼び出しを使用して、List Subscription Operationsアプリをデプロイするために Visual Studio が呼び出すものを見つけた後、解決策を見つけました。

API 要求に使用した URL が間違っていたことが判明しましたが、敬意を表して、Microsoft がAzure Management APIをお粗末に文書化したことを非難します。

ドキュメントでは、使用する URL を次のように記述しています。

https://management.core.windows.net/<subscription-id>/services/hostedservices/<service-name>/deploymentslots/<deployment-slot>/?comp=upgrade

そして、説明は次のとおりです。

リクエスト URI を生成するには、<subscription-id> をサブスクリプション ID に、<service-name> をサービスの名前に、<deployment-slot> をステージングまたはプロダクションに、<deployment-name> を一意の名前に置き換えます。あなたの展開。

彼らが言及するのを忘れていたのは、 Name ではなく、サービスの DNS Name を使用する必要があるということです! 少なくとも、証明書の問題について文句を言う代わりに、サービス名が無効である、存在しない、またはサブスクリプション ID に属していないことを伝える適切なエラー メッセージを返すことができます。

Microsoft に感謝します。それには 2 日以上かかりました。

于 2012-04-21T15:44:51.810 に答える
0

このエラーは、その証明書をホストされているサービスのシークレットストアにアップロードしていないことを示しています。Visual Studioはそれを自動的に実行している可能性がありますが、プログラムで複製する場合は、証明書の追加API呼び出しを使用して、PFXを展開にアップロードします。

于 2012-04-20T14:12:48.393 に答える
0

「400 BadRequest - The certificate with thumbprint XYZ was not found.」が表示されます。次の理由で、CreateDeployment または UpgradeDeployment シナリオに表示されます (デバッグしたばかりです)。

  1. ホステッド サービスでの SSL やリモート デスクトップのパスワード暗号化などと同じ証明書をサブスクリプション管理に使用します。したがって、拇印 XYZ を含む証明書を使用して、デプロイを作成するサービス管理 REST 呼び出しを認証します。
  2. 展開パラメーターを指定するときは、リモート デスクトップ/SSL などを構成する必要があるため、拇印で同じ証明書を参照する CSCFG を渡します。
  3. その証明書は、ホステッド サービス証明書にまだ追加されていません。

この場合、400 Bad Request エラー、CSCFG の証明書がまだホステッド サービスに関連付けられていないため、リクエストが正しくないことを示しています。多目的証明書であるため、401を取得していなくても、エラーメッセージをリクエストの認証を参照していると誤解するため、(私にとって)混乱が生じます。

于 2014-01-24T16:20:54.610 に答える