[C#][.NET Framework] HttpWebRequest / WebClient 利用時に、TLS 1.2 を有効にする方法

暗号化通信の方式の一つであるSSL通信には、SSL 2.0、SSL 3.0、TLS 1.0、TLS 1.1、TLS 1.2 と、いくつか種類があります。
最近では、TLS 1.2のみ有効にし、SSL 2.0、SSL 3.0、TLS 1.0、TLS 1.1は無効化する傾向にあるようです。

ssl

今回は、HttpWebRequest / WebClient 利用時に、TLS 1.2 を有効にする方法をご紹介します。

HttpWebRequest / WebClient 利用時に、TLS 1.2 を有効にする方法

HttpWebRequest クラス や WebClient クラスは、既定の状態では SSL3.0 および TLS1.0 が有効です。
System.Net.ServicePointManager クラスの SecurityProtocol プロパティで TLS1.2 を有効にできます。
※ Internet Explorer の TLS1.1 もしくは 1.2 の設定では、有効にできません。

なお、 SecurityProtocolType 列挙体は、以下のような値を持っています。

メンバー名 説明
Ssl3 SSL (Secure Socket Layer) 3.0 セキュリティ プロトコルを示します。
Tls TLS (Transport Layer Security) 1.0 セキュリティ プロトコルを示します。
Tls11 TLS (Transport Layer Security) 1.1 セキュリティ プロトコルを示します。
Tls12 TLS (Transport Layer Security) 1.2 セキュリティ プロトコルを示します。

TLS 1.2 を利用するには以下の環境が必要です。

・.NET Framework 4.5 以上 (.NET Framework 4.0 以前では TLS1.0 までしか利用できません)
・Windows 7 および Windows Server 2008 R2 以降

以下のクラスを利用している場合も同様の方法で対応可能です。

WebRequest
WebService クラス
SoapHttpClientProtocol クラス

ソースコードサンプル(C#)WebClient + TLS1.2

参考資料

この記事は、以下を参考にして作られました。元記事を書いていただいた皆さまに感謝いたします。

.NET Framework で TLS1.1 および 1.2 を有効化する方法
How do I disable SSL fallback and use only TLS for outbound connections in .NET? (Poodle mitigation)
Requesting html over https with c# Webclient

-未分類