Office365 TLS1.2接続の確認のためのテスト環境構築

2018年10月31日まで延長されたOffice365のTLS1.2接続ですが、クライアントがTLS1.2を用いて接続しているかを確認するのは容易ではありません。
そこで、テストサイトを作成し、TLS1.2で接続できているか確認を行ってみましょう。 

確認方法として、テスト用サーバーにIISを導入し、IISのログを確認するという方法をとりたいと思います。

2017年7月の更新となるKB4025334(Windows 10、Windows Server 2016),KB4025335(Windows Server 2012 R2)を導入しているとIIS 変数を通して、暗号化方式がわかるようになっていたようです。

【KB4025334の更新内容の一部】

f:id:mohessu:20180213022648p:plain

まずはIISを準備しましょう。

サーバーマネージャーより役割と機能の追加を行います。(この例はWindows Server 2016です。流れはWindows Server 2012でも同じですが、細部が異なります。)

f:id:mohessu:20180212171909p:plain

サーバー選択などを進めていきます。 

f:id:mohessu:20180212171932p:plain

f:id:mohessu:20180212171949p:plain

f:id:mohessu:20180212172034p:plain

IISの役割を与えるために「Web サーバ(IIS)」を選択します。

f:id:mohessu:20180212172106p:plain

管理コンソールがあると便利なので、これも合わせて入れましょう。

f:id:mohessu:20180212172116p:plain

 選択が完了するとこんな感じに。

f:id:mohessu:20180212172142p:plain

Windows 2012から役割がかなり細かく分かれているため、選択する機能については最低限となっていないかもしれませんが、私は「IIS ホスト可能なWebコア」にいつもチェックを入れています。

f:id:mohessu:20180212172508p:plain

これは好みですが、PowerShell Web Applicationの機能をインストールしてみました。
細かな選択を省くためなので、これは全く必須ではありません。

f:id:mohessu:20180212172527p:plain

この個別機能の導入がどちらかというと重要でして、、asp.netを動作させる土台はこれで完成です。

f:id:mohessu:20180212172557p:plain

f:id:mohessu:20180212172705p:plain

あとはそのまま設定を進めていくことでIIS構成は完了します。

f:id:mohessu:20180212172735p:plain

f:id:mohessu:20180212172916p:plain

再起動が嫌な場合はチェックを外しておきましょう。

f:id:mohessu:20180212172955p:plain

f:id:mohessu:20180212181842p:plain

ここまで完了すると、IISへアクセス可能となります。そういえば、ファイアウォールの設定を行わなかったのですが、最近はIIS設定すると解放されるようになったのでしょうか。これは簡単でありがたいですね。うまくつながらない場合はファイアウォールの設定は見直してみましょう。この時点ではPort80へのアクセスができるはずです。

f:id:mohessu:20180212181943p:plain

 続いて、IISマネージャを開きます。「Windows 管理ツール」の「インターネット インフォメーション サービス(IIS)マネージャー 」を起動します。

f:id:mohessu:20180212182214p:plain

続いてログの設定を行います。この設定を行うことで、アクセスしてきた相手がどういった暗号化設定でやってきたかわかるようになります。
そのほか、HTTPS接続の設定を行います。

IISマネージャーのDefault Web Siteの設定を行っていきます。

ログ管理を開きます。

f:id:mohessu:20180212183254p:plain

ログファイルの項が中央にあるので、フィールドの選択を押します。

f:id:mohessu:20180212183313p:plain

W3Cのログフィールドが記載されていますが、ここにはないので、フィールドの追加を押してカスタムフィールドを追加しましょう。

f:id:mohessu:20180212183416p:plain

 追加となった項目は以下4種。それぞれ、ソースの種類を「サーバー変数」に設定し、「ソース」を以下の値で設定します。

CRYPT_PROTOCOL
CRYPT_CIPHER_ALG_ID
CRYPT_HASH_ALG_ID
CRYPT_KEYEXCHANGE_ALG_ID

f:id:mohessu:20180212183518p:plain

f:id:mohessu:20180212183551p:plain

f:id:mohessu:20180212183612p:plain

f:id:mohessu:20180212183638p:plain

こんな感じに追加していきます。

f:id:mohessu:20180212183700p:plain

ここまで終わったらそのまま保存しましょう。
ログの設定はこれで完了です。ログの最後の4項目に暗号化情報が加わるようになりました。

f:id:mohessu:20180212183801p:plain

続いてHTTPSの設定を行っておきます。自己証明の取得からHTTPSプロトコルの有効化を行います。

テスト環境限定ですが、自己サーバー証明書を発行します。外部につながる環境や、一時的な環境以外ではこの手順は厳禁です。

左ペインでサーバー選択して、右ペインでサーバー証明書を選択します。

f:id:mohessu:20180212184246p:plain

右側のメニューに自己署名入り証明書の作成という項目があるので押します。

f:id:mohessu:20180212184441p:plain

フレンドリ名を入力し、証明書ストアをWebホスティングにしてOKをおします。
フレンドリ名は通常DNSアドレス名となります。が、今回証明書は一致しない予定なので、何を入れても確認は可能です。

f:id:mohessu:20180212184457p:plain

これで自己証明書が完成です。期限は1年で作成されるようですね。そしていつの間にかSHA256で作成されるようになったようです。Windows Server 2016だからでしょうか、、、

f:id:mohessu:20180212184536p:plain

f:id:mohessu:20180213030053p:plain

気を取り直して、最後、HTTPSプロトコルの設定です。

Default Web Siteに戻り、右側からバインドを選択します。

f:id:mohessu:20180212183932p:plain

最初の段階ではポート80のみリスンするようになっているので、追加を押します。

f:id:mohessu:20180212183941p:plain

種類をhttpsに変更します。

f:id:mohessu:20180212183951p:plain

項目が増えるので、SSL証明書を未選択から先ほど作成した自己証明書に変更します。

f:id:mohessu:20180212184005p:plain

こんな感じに選びます。

f:id:mohessu:20180212184621p:plain

これでバインドも完成です。

f:id:mohessu:20180212184638p:plain

 

 あとはクライアントからアクセスしてみましょう。
自己証明のため、安全ではない旨が表示されます。
通常、自分が作ったサーバーでない場合は安全じゃないと表示されて当然なので、この後の作業を一般ユーザーに実施してもらう場合は、何をやっているか意識してやってもらいましょう。安全性にかかわることなので、意味が分からない人は下の手順は忘れてください。

httpshttps://serverName/」にアクセスすると、安全ではない旨が表示されます。以下はEdgeですが、詳細をクリックしてWebページへ移動(非推奨)を押してください。

f:id:mohessu:20180212184804p:plain

URL欄に証明書エラーが表示されますが、サーバーへアクセスできました。

f:id:mohessu:20180212184837p:plain

この状態でIISのログを閲覧してみましょう。(ログの場所はIISマネージャーのログ記録からわかります。)

以下はログの一部ですが、後ろ4項が暗号化方式となります。
この例では400から後ろの部分です。

f:id:mohessu:20180212185346p:plain

このログ4項目のうち、先頭が400となっていればTLS1.2での接続となります。
ほかの数値であった場合は、Office365へ接続できなくなる可能性が高いため、クライアント側の設定を見直しましょう。 

ちなみに、ログの設定を行わない場合は4項目が表示されません。

f:id:mohessu:20180212185241p:plain

また、HTTPでのアクセス時は4項目とも「-」となるようです。

f:id:mohessu:20180213032051p:plain

外部から接続状態をチェックするのは難しいですが、やっておかないと本当に接続できなくなった時に大変ですので、まずはブラウザから、チェックを行っていってみてください。

音楽:Jade