自由気ままに書いちゃおう

好きなことをつらつらと・・・

TLS1.0とTLS1.1の無効化について

2020年1月、近々TLS1.0/1.1の無効化対応をするであろう私の備忘録です。

環境はひとまずWindows Server 2012R2、2016を想定しています。

 

 

■TLS1.0/1.1無効化の背景

2018年10月ごろに主要ブラウザ(Chrome、Fire Fox、Safari、Edge、IE)が、2020年前半から段階的にTLS1.0/1.1を使用した接続を無効化するという発表がありました。

 

thehackernews.com

www.itmedia.co.jp

 


段階的にTLS1.0/1.1を無効化していくにせよ、早めにサーバ側、クライアント側で対応しておくに越したことはありません。

 

■TLS1.0/1.1が無効化された後どうなるのか?

各ブラウザ側で 完全にTLS 1.0/1.1 が無効化された後、TLS 1.2 以上に対応していないサーバへアクセスすると、(おそらく)表示することができないです。

現時点では、ブラウザによって表示の違いはありますが、警告メッセージが表示されるものの接続不可になるわけではありません。

(とはいえ、接続不可になった際に慌てないように準備はしておきたい。。。)

 

■やらなきゃいけないことは?

サーバ側とクライアント側でやることがありますが、クライアント側についてはブラウザの最新バージョンを常に使用するようにしていれば、勝手にブラウザ側で対応してくれるので、特段気にする必要はありません。(=そのうち、インターネットオプションのTLS1.0/1.1表示が無くなる感じです。)

f:id:guri2o1667:20200203230613p:plain

インターネットオプションの「TLS」の記載について

 

では、サーバ側の対応はどうするのかですが、

TLS1.2以上(現時点ではTLS1.2とTLS1.3)」に対応させる必要があります。

対応方法は、IISやApache等、サーバで使用しているアプリケーションによりけりですが、ここでは、WindowsServerのレジストリ変更を行い、OSから直接、TLS1.0/1.1を無効化する方法を紹介します。

※レジストリを変更するため、あくまで自己責任でお願いします。責任はとれません。

(レジストリのバックアップを取得しておくことをお勧めしますが、本記事ではそこは割愛します)

 

■少し脇道それて・・・

Windowsの各種OSがサポートしているプロトコルバージョンのサポート状況は以下の通りです。 

f:id:guri2o1667:20200130213846p:plain

各種WindowsOSのTLSサポート状況

 

docs.microsoft.com

 

では本題。

■TLS1.0/1.1無効化方法(WindowsServer2012R2、2016)

 1.レジストリエディタを起動。※Win+Rで「regedit」と入力し、Enterキーを押下します。

f:id:guri2o1667:20200130214054p:plain

レジストリエディタの起動

2.以下パスまで移動します。

\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols

 

3.以下パス(=キー)を作成します。

※パスの前半部分は長いから省略。

※TLS と1.0、1.1の間に半角スペースが必要です。(実は、画面キャプチャ取得時に半角スペースを入れ忘れてました。画像が不適切な状態になっております。そのため、半角スペースを入れて設定してください。)

 

【TLS1.0を無効化するためパス】

\SCHANNEL\Protocols\TLS 1.0\Server  ※半角スペース忘れないように。

 

 

【TLS1.1を無効化するためパス】

 \SCHANNEL\Protocols\TLS 1.1\Server  ※半角スペース忘れないように。

 

上記パスの作成方法は、以下の通りです。

(TLS1.0を無効化するためのパスの作成方法を例として記載)

f:id:guri2o1667:20200130215523p:plain

キーの作り方

4.Serverの中にレジストリ値である「DWORD(32ビット)値」を作成します。

ここでは、「DisabledByDefault」「Enabled」の2つを作成します。

まずは、「DisabledByDefault」の作成。

f:id:guri2o1667:20200130220739p:plain

DisabledByDefault の設定

続いて、「Enabled」の作成です。

作成要領は上記「DisabledByDefault」と同じため一部省略し、大事なところのみ記載します。

f:id:guri2o1667:20200130221004p:plain

Enabled の設定

最終的に下記の通りになっていればOKです。

f:id:guri2o1667:20200130221212p:plain

設定後のレジストリ状態

5.上記3、4の手順を利用し、TLS1.1についても同様の設定を行います。

 

6.OS再起動を実施します。

 

 

■DisabledByDefaultとEnabledの意味は?

Enabled レジストリ値は、プロトコル バージョンを使用できるかどうかを定義します。
値が 0 に設定されているプロトコル バージョンは、既定で有効に設定されていようが、アプリケーションで明示的にそのプロトコル バージョンが要求されていようが、使用できません。
値が 1 に設定されているプロトコル バージョンは、既定で有効に設定されている場合、またはアプリケーションで明示的にプロトコル バージョンが要求されている場合に使用できます。
値が定義されていない場合は、オペレーティング システムによって決定される既定値が使用されます。


DisabledByDefault レジストリ値は、プロトコル バージョンを既定で使用するかどうかを定義します。
この設定は、アプリケーションが明示的にプロトコル バージョンの使用を要求していない場合にのみ適用されます。
値を 0 に設定する場合、プロトコル バージョンは既定で使用されます。
値を 1 に設定する場合、プロトコル バージョンは既定で使用されません。
値が定義されていない場合は、オペレーティング システムによって決定される既定値が使用されます。

 

■TLSのバージョン確認

クライアントがブラウザでURLに接続した際、TLSのどのバージョンを使用して接続しているのかを確認する方法についてです。

ブラウザはIEを使用していることを前提としています。

 

接続したサイトの空いているスペースで右クリックし、「プロパティ」を選択すると

「接続」項目に表示されます。

 

 

以上です。

TLS1.0とTLS1.1で似たような作業をするので、作業時はどちらに対しての作業を実施しているのかを意識するようにしていただければ幸いです。