名前空間 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 件のコメント:
コメントを投稿