Memigrasikan kode SslStream dari .NET Framework ke .NET

.NET Core membawa banyak peningkatan serta melanggar perubahan pada cara SslStream kerjanya. Perubahan terpenting yang terkait dengan keamanan jaringan adalah bahwa ServicePointManager kelas sebagian besar telah usang dan hanya memengaruhi antarmuka warisan WebRequest .

Untuk setiap SslStream instans, Anda harus mengonfigurasi protokol TLS yang diizinkan dan panggilan balik validasi sertifikat secara terpisah melalui SslServerAuthenticationOptions atau SslClientAuthenticationOptions. Untuk mengonfigurasi opsi keamanan jaringan yang digunakan dalam HTTPS di HttpClient, Anda perlu mengonfigurasi opsi keamanan di handler yang mendasar. Handler default yang digunakan oleh HttpClient adalah SocketsHttpHandler, yang memiliki SslOptions properti yang menerima SslClientAuthenticationOptions.

Pertimbangkan contoh berikut yang menunjukkan cara membuat HttpClient dengan panggilan balik validasi sertifikat kustom:

bool CustomCertificateValidator(
    object sender,
    X509Certificate? certificate,
    X509Chain? chain,
    SslPolicyErrors sslPolicyErrors)
{
    // TODO: Always returns false. 
    // Need to implement certificate evaluation logic.
    return false;
}

HttpClient httpClient = new(
    new SocketsHttpHandler
    {
        SslOptions =
        {
            RemoteCertificateValidationCallback = CustomCertificateValidator
        }
    });

Tabel berikut ini memperlihatkan cara memigrasikan properti individual ServicePointManager yang terkait dengan TLS.

API Sumber Target API (Antarmuka Pemrograman Aplikasi)
CheckCertificateRevocationList Tentukan konfigurasi X509RevocationMode yang tepat pada SslClientAuthenticationOptions.CertificateRevocationCheckMode.
EncryptionPolicy Gunakan SslClientAuthenticationOptions.EncryptionPolicy.
SecurityProtocol Gunakan SslClientAuthenticationOptions.EnabledSslProtocols.
ServerCertificateValidationCallback Gunakan SslClientAuthenticationOptions.RemoteCertificateValidationCallback.