こんにちは。Internet Explorer サポート チームの鶴巻です。
昨年 SSL3.0 のプロトコル自体に脆弱性 (POODLE) が発見され、IT 業界全体の問題となりました。
.NET Framework で開発している既存プログラムを TLS1.1 および 1.2 に対応したいとのお問い合わせをよくいただきます。
今回は、特にお問い合わせの多い HttpWebRequestご利用時に、TLS1.1 および 1.2 を有効にする方法をご紹介します。
TLS1.1 および 1.2 を有効にする方法
HttpWebRequestクラスは、既定の状態では SSL3.0 および TLS1.0 が有効です。
System.Net.ServicePointManagerクラスの SecurityProtocolプロパティで TLS1.1 および 1.2 を有効にできます。
※ Internet Explorer の TLS1.1 もしくは 1.2 の設定では有効にできません。
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
TLS1.1 および 1.2 を利用するには以下の環境が必要です。
- .NET Framework 4.5 以上 (.NET Framework 4.0 以前では TLS1.0 までしか利用できません)
- Windows 7 および Windows Server 2008 R2 以降
以下のクラスを利用している場合も同様の方法で対応可能です。
優先順位について
.NET Framework における暗号化通信では、バージョンによらず暗号強度の高い TLS を優先的に利用します。
中間機器や Web サーバー側の実装によりますが、TLS1.2/1.1/1.0/SSL3.0 のいずれも利用できる場合には、最も暗号強度の高い暗号方式として TLS1.2 を選択します。
(2015/4/8 追記)
TLS/SSL のバージョンを確認にする方法
[ファイル] - [プロパティ] メニューから確認できます。以下の例では TLS 1.0 で通信していることがわかります。
参考情報
ServicePointManager Class
https://msdn.microsoft.com/ja-jp/library/system.net.servicepointmanager(v=vs.110).aspx
ServicePointManager.SecurityProtocol Property
https://msdn.microsoft.com/ja-jp/library/system.net.servicepointmanager.securityprotocol(v=vs.110).aspx
SecurityProtocolType Enumeration
https://msdn.microsoft.com/ja-jp/library/system.net.securityprotocoltype(v=vs.110).aspx
今回のブログは以上です。
サポート チーム違いではないかと疑問を持たれた方もいらっしゃるかもしれませんが、Internet Explorer サポート チームでは、.NET Framework の HTTP クライアントや WinHTTP の開発案件も担当しています。
また次回もよろしくお願いいたします。