WebRequest
次のエラー メッセージのため、HTTPS サーバーに接続できません:
The request was aborted: Could not create SSL/TLS secure channel.
サーバーには使用されているパスを持つ有効な HTTPS 証明書がないことはわかっていますが、この問題を回避するために、別の StackOverflow の投稿から取得した次のコードを使用します。
private void Somewhere() {
ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(AlwaysGoodCertificate);
}
private static bool AlwaysGoodCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors policyErrors) {
return true;
}
問題は、サーバーが証明書を検証せず、上記のエラーで失敗することです。どうすればいいのか、誰か知っていますか?
数週間前に同僚とテストを行ったところ、上記で書いたのと似たような方法で問題なく動作していたことを述べておきます。私たちが見つけた唯一の「大きな違い」は、私が Windows 7 を使用していて、彼が Windows XP を使用していたことです。これによって何かが変わりますか?
ベストアンサー1
ついに答えを見つけました (情報源は明記していませんが、検索から得たものです)。
このコードは Windows XP では動作しますが、Windows 7 では先頭に以下を追加する必要があります。
// using System.Net;
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
// Use SecurityProtocolType.Ssl3 if needed for compatibility reasons
そして今では完璧に動作します。
付録
Robin Frenchが述べたように、PayPalの設定中にこの問題が発生した場合は、2018年12月3日からSSL3がサポートされなくなることに注意してください。TLSを使用する必要があります。Paypalページそれについて。