.NET Core では、多くの機能強化が加わり、 SslStream のしくみが大きく変わります。 ネットワーク セキュリティに関連する最も重要な変更は、 ServicePointManager クラスはほとんど廃止され、レガシ WebRequest インターフェイスにのみ影響を与えるということです。
SslStreamインスタンスごとに、許可される TLS プロトコルと証明書検証コールバックを、SslServerAuthenticationOptionsまたはSslClientAuthenticationOptions経由で個別に構成する必要があります。 HttpClientで HTTPS で使用されるネットワーク セキュリティ オプションを構成するには、基になるハンドラーでセキュリティ オプションを構成する必要があります。 HttpClientで使用される既定のハンドラーはSocketsHttpHandlerであり、SslOptionsを受け入れるSslClientAuthenticationOptions プロパティがあります。
カスタム証明書検証コールバックを使用して HttpClient を作成する方法を示す次の例を考えてみましょう。
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
}
});
次の表は、TLS に関連する個々の ServicePointManager プロパティを移行する方法を示しています。
.NET