1. ホーム
  2. c#

[解決済み] リクエストは中断されました。SSL/TLSセキュアチャネルを作成できませんでした

2022-03-16 14:22:37

質問

を使用してHTTPSサーバーに接続することができません。 WebRequest このエラーメッセージのため

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を使っていたことです。 それで何か変わるのでしょうか?

解決方法は?

やっと答えが見つかりました(出典は書いていませんが、検索で出てきたものです)。

このコードはWindows XPで動作しますが、Windows 7では、これを最初に追加する必要があります。

// using System.Net;
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
// Use SecurityProtocolType.Ssl3 if needed for compatibility reasons

そして今、完璧に動作しています。


ADDENDUM

Robin Frenchが言及したように; PayPalの設定中にこの問題が発生した場合、彼らは2018年12月3日からSSL3をサポートしないことに注意してください。TLSを使用する必要があります。以下は ペイパルページ をご覧ください。