ごった煮

色々な事を書いてます

.NET FrameworkでTLS1.2の通信エラーが出た場合の対処方法

最近TLS1.2を強制してくるサービスが増えてきています。

.NET Frameworkのバージョンによっては、デフォルトでTLS1.2が使えないものがあるのでその場合の対処方法のメモです。

使えるプロトコルの確認

ServicePointManager.SecurityProtocol

SecurityProtocolを見ると、使えるプロトコルが分かります。

.NET Framework 4.6.2で、Windows10 17763.253の場合は、Tls, Tls11, Tls12になります。 4.5.2の場合は、Ssl3, Tlsになります。

ここにTls12の記載がない場合、TLS1.2を強制するサービスとの通信ができません。

Tls12をで通信をしたい場合は、SecurityProtocolにTls12を追加する必要があります。

Tls1.2のみにする場合は、

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

とします。

ですが、この場合、ほかのプロトコルが使えなくなるので以下のような感じで他も使えるように設定します。

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;

まとめ

これにて一件落着