質問がばかばかしい場合は、事前にお詫びします。クライアント証明書を受け入れる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で行うことができますか?
いずれにしても、これは証明書認証を行う適切な方法ですか?
ありがとうございます!
リモートデスクトップ経由でWindows AzureインスタンスでIISを管理したくないのは、非永続的な変更だからです。 –
良い答え+1 – BentOnCoding