1

質問がばかばかしい場合は、事前にお詫びします。クライアント証明書を受け入れるAzureでasmx Webサービスを設定するにはどうすればよいですか?

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

私はX509Certificate2をロードし、次の操作を行って、要求に追加しますWPFアプリがあります。

Webサービスで
X509Certificate2 cert = new X509Certificate2("..."); 
webRequest.ClientCertificates.Add(cert); 

私は

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

して証明書を取得し、Iを次のサンプルを使用して、証明書(私は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が無効なハンドルである)を取得するとすぐに、私は

Request.ClientCertificate.Certificate 
がそうであるように

私はいくつか質問があります。例外を回避するにはどうしたらいいですか? This answer私はIISの設定を変更する必要がありますが、どのようにAzureで行うことができますか?

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

ありがとうございます!

答えて

3

あなたはappcmd.exeとの組み合わせで、IISを変更するには、コマンドスクリプトを使用することができます。

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

この例では、DisableTimeout.cmdを起動タスクとして呼び出します。スタートアップタスクの作成方法の詳細については、Cloud Cover Showのthis episodeをご覧ください。 P1 atform Training Kitの起動タスクに関するラボが必要です。

起動時に自動化されたタスクを使用して、すべてのタイプのIIS構成を変更する必要があります。 RDP経由でIISを手動で変更すると、これらの変更はすべてのインスタンスに反映されず、ハードウェアの障害やOSの更新が発生した場合でも永続的になりません。

0

azureインスタンスにリモートアクセスすることで、IISを管理できます。一度にすべてのインスタンスに対してグローバルに行う方法については、わかりません。それは面白いサイドプロジェクトです。

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

+2

リモートデスクトップ経由でWindows AzureインスタンスでIISを管理したくないのは、非永続的な変更だからです。 –

+0

良い答え+1 – BentOnCoding

関連する問題