[解決済み] ServerCertificateValidationCallbackを設定しても、SSL/TLSセキュアチャネルを作成できない。
2023-02-23 05:54:08
質問
私は、SSL/TLS 接続を確立して 自己署名証明書を持つテストサーバ . 非セキュアなチャネルでの通信は問題なく動作しました。
この解決策を元に書いた私のサンプルコードです。 HttpClient で信頼できない SSL 証明書を使用できるようにする C# 証明書エラーを無視する? .NETクライアントからssl Web APIへの接続
ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
var c = new HttpClient();
var r = c.GetAsync("https://10.3.0.1:8443/rest/v1").Result;
if (r.IsSuccessStatusCode)
{
Log.AddMessage(r.Content.Get<string>());
}
else
{
Log.AddMessage(string.Format("{0} ({1})", (int)r.StatusCode, r.ReasonPhrase));
}
は、こんなこともやってみました。
var handler = new WebRequestHandler();
handler.ServerCertificateValidationCallback = delegate { return true; };
var c = new HttpClient(handler);
...
そして、この
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
が、毎回例外が発生します。
InnerException: System.Net.Http.HttpRequestException
_HResult=-2146233088
_message=An error occurred while sending the request.
HResult=-2146233088
IsTransient=false
Message=An error occurred while sending the request.
InnerException: System.Net.WebException
_HResult=-2146233079
_message=The request was aborted: Could not create SSL/TLS secure channel.
HResult=-2146233079
IsTransient=false
Message=The request was aborted: Could not create SSL/TLS secure channel.
Source=System
StackTrace:
at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar)
InnerException:
何が間違っているのでしょうか?なぜ私はこのサーバ(無効な自己署名証明書を持っている)に接続することができません。
どうしたらいいですか?
ServerCertificateValidationCallbackで正しく実行されています。これはあなたが直面している問題ではありません。あなたが直面している問題は、SSL/TLS プロトコルのバージョンである可能性が高いです。
たとえば、サーバーがSSLv3とTLSv10のみを提供し、クライアントがTLSv12を必要とする場合、このエラーメッセージが表示されます。必要なことは、クライアントとサーバーの両方でサポートされている共通のプロトコル バージョンがあることを確認することです。
できるだけ多くのサーバーに接続できるクライアントが必要なとき (できるだけ安全であることよりも)、私はこれを使用します (検証コールバックの設定と一緒に)。
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
関連
-
[解決済み】「未割り当てのローカル変数を使用」とはどういう意味ですか?
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
[解決済み】統合マネージドパイプラインモードで適用されないASP.NETの設定が検出された
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み] [Solved] 不正な文字列値: '\xEFxBFxBD' for column
-
[解決済み】インデックスが範囲外でした。コレクションパラメータname:indexのサイズより小さく、非負でなければなりません。
-
[解決済み】ファイルやアセンブリ、またはその依存関係の1つをロードできませんでした。
-
[解決済み] リクエストは中断されました。SSL/TLSセキュアチャネルを作成できませんでした
-
[解決済み] SSL/TLSセキュアチャネルの信頼関係を確立できなかった -- SOAP
-
[解決済み] C# Ignore certificate errors?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] エンティティタイプ ApplicationUser は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み】Sequence contains no matching element(シーケンスにマッチする要素がない
-
[解決済み】バックスラッシュを含むパス文字列のエスケープシーケンスが認識されない件
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み] [Solved] 不正な文字列値: '\xEFxBFxBD' for column
-
[解決済み】WebResource.axdとは何ですか?
-
[解決済み】名前 'ViewBag' が現在のコンテキストに存在しない - Visual Studio 2015
-
[解決済み] C# Ignore certificate errors?
-
[解決済み] HttpClientで信頼されていないSSL証明書を許可する