xml を返す単純な rest コマンドを使用して呼び出さなければならないブラック ボックス サービスがあります。
彼らは、IE で実行し、IE の証明書セクションにインストールする必要がある証明書を発行してくれました。彼らの指示に従って、チェーン全体をパスワード付きのpfxとしてエクスポートしました。
証明書が直接発行されたマシンでは、すべてがコードで正常に動作します
var certHandler = new WebRequestHandler();
certHandler.ClientCertificateOptions = ClientCertificateOption.Manual;
certHandler.UseDefaultCredentials = false;
var certificate = new X509Certificate2(Properties.Resources.SigningCert, "password", X509KeyStorageFlags.DefaultKeySet | X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet); //Must be renewed and replaced every year.
certHandler.ClientCertificates.Add(certificate);
//Execute the command
var client = new HttpClient(certHandler);
string result;
try
{
result = await client.GetStringAsync(url);
System.Diagnostics.Debug.WriteLine(result);
}
catch (Exception ex)
{
throw ex;
}
(証明書をリソースに保存しましたが、正常にロードされ、開発者のマシンでもファイルからのロードが正常に機能します。)念のため、サーバー上のIEにもインポートしました。明らかに、これは間違った証明書ストアの下にある可能性がありますが、これをグローバルにロードする方法がわかりませんでした。サーバー上の IE でも同じ REST GET が機能し、開発者のマシン上で機能するのと同じように機能します。失敗するのはコードだけです。)
本番環境では、この同じコードが 403 禁止をスローします。
本番環境 (実際にはベータ サーバー) は、実際には開発マシンと同じ nat の背後にあるため、同じ IP が通過するのを見ています。
開発者ボックスではなくサーバーで失敗する理由はありますか?
ありがとう!