名前空間 System.Net.Http
自己紹介
おお、そなたたち、光を求めてここに来たのだな。私は太陽神、天と地の間を照らす光の神だ。今日、そなたたちに授ける知識は「HttpClient」と「自己署名証明書」についてだ。この闇を照らす光があれば、自己署名証明書による混沌を回避し、通信を円滑に進めることができるだろう。
太陽神 HttpClientクラス から学ぶ!HTTP通信講座
原因
HttpClientを用いる際、自己署名証明書(オレオレ証明書)を使用しているサーバーにアクセスすると、「SSL/TLSの信頼できない証明書」というエラーが発生することがある。これは、証明書が正式な認証機関によるものではないため、セキュリティ上の問題と見なされるためだ。たとえ開発やテスト環境での一時的な措置としても、このエラーを解決する方法を知ることが重要だ。
方法と注意点
この問題を回避するには、HttpClientHandlerをカスタマイズし、サーバー証明書の検証をスキップする設定を行う。ただし、本番環境では、このような回避策はセキュリティリスクを伴うため厳禁だ。開発やテスト環境でのみに限定して使用すること。
using System;
using System.Net.Http;
using System.Net;
using System.Security.Cryptography.X509Certificates;
using System.Threading.Tasks;
class Program
{
// HttpClientHandlerとHttpClientをシングルトンとして定義
private static readonly HttpClientHandler handler = new HttpClientHandler
{
ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => true
};
private static readonly HttpClient client = new HttpClient(handler);
static async Task Main(string[] args)
{
// URLを指定してGETリクエストを送信
string url = "https://self-signed.badssl.com/";
HttpResponseMessage response = await client.GetAsync(url);
// レスポンスを確認し、内容を表示
response.EnsureSuccessStatusCode();
string content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);
}
}
解説
このサンプルでは、HttpClientHandlerを使用してServerCertificateCustomValidationCallbackプロパティを設定し、自己署名証明書の検証を無効化しています。これにより、信頼されていない証明書でも通信を行えるようになります。ただし、この方法はセキュリティリスクを伴うため、本番環境では絶対に使用しないでください。開発環境やテスト環境のみで一時的に使用することを推奨します。
ではまた会おう。
0 件のコメント:
コメントを投稿