seegeのまとめサイト

もっと早く教えてくれよって思った内容を書いていきたいと思います。

Windows7でTLS1.1/1.2を使用する方法

Windows7は、まだ続く

まだ、Windows7を使わないといけない会社というのは多くて、今でも普通に使用しているのを見かけます。

f:id:seege:20210206071610p:plain

社内で業務系のソフトウェアを使用しているだけで外部には一切、接続しないというのであれば、まだいいんですが、メールだけは使いたいという場合があるんですよね。

f:id:seege:20210206101337p:plain

しかし、メールを使いたいとなると、今は面倒なんです。

セキュリティソフトは、まだWindows7でも動作するものがあるので問題は、そこではなくて、メールサーバーへの接続です。

今は、メールサーバーが、SSL1.0、2.0、3.0、TLS1.0、1.1への対応を止めてしまっているんです。

これ、Window8.1以上であれば、関係ないのですが、Window7だと一工夫が必要なんですね。

SSLTLSとは?

まず、SSLTLSって何?ってことなんですが、どちらも、インターネット上の通信データを盗聴されないように暗号化するためのプロトコル(取り決め)です。

インターネット上に流れる通信データは盗聴ができてしまうので、盗聴されても何かがわからないように暗号化を行うためのものです。

現在、インターネット上を流れるデータを暗号化する標準的なプロトコルが、SSLTLSということです。

  • SSL:Secure Sockets Layer
  • TLS:ransport Layer Security

SSL通信は、データの送信側は公開鍵と言われるデータの羅列で暗号化を行ないます。

この鍵では、暗号化は行えますがが復号(暗号化する前の状態に戻す)はできません。

復号するには秘密鍵という公開鍵とは別の鍵が必要になります。

公開鍵を提供しているサーバーが、偽物だと暗号化の意味がありませんので、サーバーが間違いなく本物だということを確認するために、SSL証明書があります。

SSL証明書というのは、認証局がサーバーの身元を確認して本人確認ができると発行してくれる証明書です。

SSLTLS通信は、公開鍵、秘密鍵SSL証明書の3つが揃って初めて成立します。

ところが、SSL通信は欠陥の連続で、1.0、2.0、3.0と重大な欠陥が見つかりました。結局、SSLは欠陥を修正していきましたが、結局は根本的な問題が残ってしまい、SSL3.0では仕様を根本的に見直しをかけて変更したのですが、2014年に、また欠陥が見つかり、SSLは使えないということになってしまいました。(2015年6月に、IETF(インターネット技術タスクフォース)によって「SSL 3.0」の使用を禁止)

SSLを本格的に見直すという動きから、SSL3.0がリリースされた翌年には、セキュリティ専門家を交えた第三者機関で開発するために、TLSワーキンググループも結成さています。

そして、SSL3.0をベースにした1999年にTLS1.0がリリースされたのです。

SSL3.0とTLS1.0の違いはわずかです、互換性はなかったのですが、徐々にTLSが使われるようになっていきました。

SSLは使用禁止だと言われても、本当に使用禁止にしてしまうと、ホームページが表示されない、メールの送受信ができないと、クレームが殺到します。

このためメールサーバーではSSL/TLSというのは対応はしていましたが、暗号化しなくてもメールの送受信はできるようになっていました。

しかし、これが、2020年1月14日のWindows7のサポート終了と共に変わってきたんですね。

本当は、一番安全な最新のTLSを使用するのが良いのですが、それだとWindows7を使用している方は、メールの送受信ができなくなってしまいます。

しかし、Windows7のサポート期間が終了したのでメールサーバーの管理会社も、Windows7はサポートが終了していますので最新のOSに変更してくださいということが言えます。

そして、以下のようなステップで厳しくしていきました。

  1. SSL/TLSを使用しないとメールの送信ができない
  2. SSL/TLSを使用しないとメールの受信ができない
  3. TLS1.1以上でないとメールの送受信ができない(欠陥のある暗号化の廃止)

送信元のメールアドレスを偽ったメールを無くさないと、本当に本人が送信したものかどうかが判別できないんですね。

本人が送信したものかどうかを確認するためには、メールを送信する際にパスワード認証を行うことになります。

そのパスワードが暗号化されていないと盗聴されますので、SSL/TLSで暗号化を行って認証を行う必要があります。しかし、欠陥のあるSSLでは、暗号化しても解読されてしまう心配があります。

Windows7では、TLS1.1/1.2が使えない

 

では、最新のTLSしか対応できないメールサーバーを使用してメールの送受信を行うには、どうすれば良いのでしょうか?

一番良いのは、サポートが終了したWindows7ではなく、Windows8.1または10のパソコンを使用してメールを利用してくださいということです。

でも、まだ動作しているのに?なぜ、使えないんだ?、Windows7をやめるには、パソコンを全部入れ替える必要もあるし、高額なシステムも新しいOSに対応したものに買い替えないといけなくなります。

何か方法はないのか?ってことになりますよね(笑)

Windows7ではどうすれば?

実は、Windows7で、TLS1.1、1.2を使用するための更新プログラム 「KB3140245」が準備されているんですね。

●KB3140245
  • アプリケーションと WINHTTP_OPTION_SECURE_PROTOCOLS フラグを使用する Secure Sockets Layer (SSL) 接続に WinHTTP を使用して記述されているサービスは、TLS 1.1 または TLS 1.2 プロトコルを使用できません。このフラグの定義は、これらのアプリケーションおよびサービスに含まれていないためにです。
  • この更新プログラムでは、WINHTTP_OPTION_SECURE_PROTOCOLS フラグを使用する場合に使用する SSL プロトコルを指定するのにはシステム管理者を可能にする DefaultSecureProtocols レジストリ エントリのサポートを追加します。
  • WinHTTP 既定のフラグを使用して新しい TLS 1.2 またはアプリケーションの更新の必要なしでネイティブに TLS 1.1 プロトコルを活用して構築された特定のアプリケーションを許可するこのことができます。

【出典】WinHTTP が Windows での既定のセキュリティで保護されたプロトコルとして TLS 1.1 および TLS 1.2 を有効にする更新プログラム

更新プログラム 「KB3140245」を適用してやればいいだろ?って思いますよね。

しかし、「KB3140245」の適用条件が、Microsoft UpdateWindows7を最新の状態にしておくってことなんです。

最新の状態にすると書かれても、最新にするって簡単な道のりではないんですね。

ずっと、Microsoft Updateがされていない状態で、Microsoft Updateを実行しても途中でエラーが出てしまうんですね。

f:id:seege:20210206120213p:plain

最新の状態ではMicrosoft Update のエージェントが変更されていて、ずっとUpdateを行っていないと、エージェントが古いままのため、更新プログラムが見つけられずエラーになってしまうとか、事前に適用しておかないとエラーになる更新プログラムがあったりと使用しているパソコンの状態で変わってきます。

  • 8007000E → KB3138612を適用してから再度実行
  • 80092004 → KB4490628を適用してから再度実行

Windows7 SP1の初期状態からMicrosoft Updateを始めればこのようなエラーが発生することはありませんが、中途半端な状態で、更新をずっと放置しているとこのようなエラーに遭遇することになります。

1台や2台なら個別に対応してもそれまでですが、沢山あると流石に嫌になります。

Microsoft Update Catalog

何とか、必要最小限の更新プログラムだけを適用して、TLS1.2に対応できるようにならないか?と考えました。

思いついたのが、Microsoft Updateで最新の状態にするのではなく、必要なものだけを個別にダウンロードして適用すれば、TLS1.1/1.2が使えるようになるはずです。

マイクロソフトアップデートカタログを利用すると、更新プログラムの番号で検索することができます。

また、同時に、適用するのに関連する更新プログラムも一緒に検索結果として表示してくれるんですね。

【参照】Microsoft Update Catalog

Windows7でTLS1.1/1.2を使えるようにする手順

STEP1:ダウンロード

マイクロソフトアップデートカタログから、以下の更新プログラムをダウンロードします。

  • KB3138612
  • KB3140245
  • KB4490628

 STEP2:更新プログラム実行

ダウンロードした上記の更新プログラムを順番に実行します。

再起動を求められても直ぐに行わず、3つ全て適用してから再起動を行います。

STEP3:再起動

3つ全て適用したら再起動します。

この時に、パソコンによっては、いつまで経ってもログイン画面が出て来ないで、「Windows更新プログラム構成中」といった画面のまま変わらない現象が出る場合があります。

通常は再起動を行って5分もすればログイン画面が表示されるので、5分待ってもログイン画面が表示されない場合には、キーボードから以下を同時に押してください。

  • CTRL+ALT+DEL

するとログイン画面が表示されるはずです。

STEP4:レジストリの設定

更新プログラムを適用するだけではTLS1.1/1.2が使えるようにはなりません。

【1】DefaultSecureProtocols レジストリ エントリの追加

Windows7 32bit版

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp
  • サブキー:DefaultSecureProtocols
  • レジストリの値: 0x00000A00

Windows7 64bit版

  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp
  • 名前(DWORD):DefaultSecureProtocols
  • レジストリの値: 0x00000A00

 【2】InternetExplorerのTLS 1.1 および 1.2 を有効にする

【3】TLS 1.1 および 1.2 SChannel コンポーネント レベルで有効にする。

TLS1.1用

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client
  • 名前(DWORD):DisabledByDefault
  • レジストリ値:0

TLS1.2用

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client
  • 名前(DWORD):DisabledByDefault
  • レジストリ値:0

【出典】WinHTTP が Windows での既定のセキュリティで保護されたプロトコルとして TLS 1.1 および TLS 1.2 を有効にする更新プログラム

 

STEP5:メーラーの設定で注意点

暗号化接続の種類を選択する際に、TLS1.1/TLS1.2を使用するので「TLS」を選択してしまうとメールの送受信が正常にできなくなるので注意が必要です。

今回、行っているのは、SSLTLSに切り替えているので、「SSL」のままにしておく必要がある。ちょっと、考えると、「TLS」にしたくなるところですが、「TLS」にするとダメなので、注意してください。

「自動」という設定でも正常に動作しないので、必ず、「SSL」を選択してください。