1

質問がばかげている場合は、事前にお詫び申し上げます。

Azure で asmx サービスを実行しています (HTTP - SSL なし)。

X509Certificate2 をロードし、次のようにしてリクエストに追加する WPF アプリがあります。

X509Certificate2 cert = new X509Certificate2("...");
webRequest.ClientCertificates.Add(cert);

Webサービスでは、証明書を取得します

new X509Certificate2(this.Context.Request.ClientCertificate.Certificate)

次に、次のサンプルを使用して、(Azure コントロール パネルにアップロードし、サービス定義ファイルに追加した) 証明書を読み込みます。

var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
X509Certificate2Collection certs = store.Certificates.Find(X509FindType.FindBySubjectName, certName, true);

そして、次のようにして検証します。

clientCert.Thumbprint == certs[0].Thumbprint

残念ながら、すぐに例外 ( System.Security.Cryptography.CryptographicException: m_safeCertContext is an invalid handle )が発生します。

 Request.ClientCertificate.Certificate

いくつか質問があります。例外を回避するにはどうすればよいですか。この回答は、IIS 設定を変更する必要があると述べていますが、Azure でそれを行うにはどうすればよいですか?

いずれにせよ、これは証明書認証を行う適切な方法ですか?

ありがとう!

4

2 に答える 2

3

と組み合わせて、コマンド スクリプトを使用して IIS を変更できますappcmd.exe

簡単な例 (アプリケーション プールでタイムアウトを無効にする) については、Steve Marx によるこのサンプルをご覧ください。

この例では、DisableTimeout.cmd をスタートアップ タスクとして呼び出します。スタートアップ タスクの作成について詳しくは、Cloud Cover Show のこのエピソードをご覧ください。プラットフォーム トレーニング キットにもスタートアップ タスクに関するラボがあるはずです。

IIS 構成の変更は、起動時に自動化されたタスクを使用して行う必要があることに注意してください。RDP を介して IIS を手動で変更した場合、それらの変更はすべてのインスタンスに反映されず、ハードウェア障害や OS の更新が発生した場合に持続しません。

于 2011-12-04T14:13:05.767 に答える
0

Azure インスタンスにリモート接続して、IIS を管理できます。一度にすべてのインスタンスに対してグローバルに行う方法については、よくわかりません。しかし、それは興味深いサイドプロジェクトになるでしょう。

http://learn.iis.net/page.aspx/979/managing-iis-on-windows-azure-via-remote-desktop/

于 2011-12-04T05:05:42.847 に答える