引用
参考: .NET Framework で TLS1.1 および 1.2 を有効化する方法 -まとめ-
.NET Framework 4.6.x
TLS 1.1 / TLS 1.2 に対応済み
プロパティの既定値は TLS 1.0、1.1 および 1.2
「各 OS 上での .NET Framework の既定のバージョン」の図によると、Windows 10 (Windows Server 2016 含む) は .NET Framework 4.6 またはそれ以降のバージョンが既定でインストールされている模様です。
コードでの対処
一方、アプリの <TargetFramework />
を net45
net451
net452
(.NET Framework 4.5.0, 4.5.1, 4.5.2) と指定している場合に、コードで対処する例:
参考: C# 今更ですが、HttpClientを使う - Qiita
ServicePointManager.SecurityProtocol =
SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
※ 個人的には =
で代入するより |=
で論理和する方が好みです。将来的にというか執筆時点で SecurityProtocolType.Tls13
が存在するので、Tls13 が既定で有効になっている場合に、Tls13 の対応能力を無効化しないか、という懸念があります。
参考: SecurityProtocolType 列挙型 (System.Net) | Microsoft Docs
ネタ: .NET Framework 4.6.0, 4.6.1, 4.6.2 しか許さない OS がある
ちょっとびっくりしたのですが Windows 10 v1507 (LTSC 2015)
では .NET Framework 4.6.x しかインストールできないようです。
参考: .NET Framework で TLS1.1 および 1.2 を有効化する方法 -まとめ-
「各 OS 上でサポートされるバージョン」図を参照
Windows Server 2016 は .NET Framework 4.6.x 制限に該当しない
Windows Server 2016 は Windows 10, version 1607 (Anniversary Update)
をベースにしていて、Windows 10 v1507 (LTSC 2015)
には該当しません。
つまり .NET Framework 4.6.0, 4.6.1, 4.6.2 制限はありません。
Windows 10, version 1607 (Anniversary Update) に対応する10年間サポートの長期サービスチャネルの Windows Server である。
参考: Microsoft Windows Server 2016 - Wikipedia
更新プログラムを必要とする OS
結論としては Windows Server 2008 SP2
(Windows Vista ベース) のみ、OS の更新プログラムを必要とします。Windows Update で配布されるかどうかは不明です。
Windows Server 2008 SP2
既定の状態では OS として TLS 1.1 および 1.2 を利用することができません。
参考: .NET Framework で TLS1.1 および 1.2 を有効化する方法 -まとめ-
!ご注意ください!
Windows OS 自体が TLS 1.1 および 1.2 を利用することができない状態でアプリケーション側で TLS 1.1 および 1.2 が指定されると、アプリケーション実行時に例外が発生します。