システム イベント(ソース:Schannel) ID 36874 は SSL/TLS 通信に関するエラー イベント ログです。
今回は、ID 36874 のイベント ログの意味や確認すべきポイントについて紹介します。
この問題を解決するには、SSL/TLS の基本知識が必要です。
また、SSL/TLS の一般的な仕組みについては、以下の記事で紹介していますのでご参照ください。
インターネット上で通信を暗号化して送信し、他の人に見られないように安全に通信を行うためのプロトコルである SSL/TLS の概要について説明します。 SSL/TLS とは SSL/TLS とはインターネット等の通信ネットワークにおいて、[…]
SSL/TLS では暗号化通信を開始する前に、SSL/TLS ハンドシェイクと呼ばれるやりとりを行い、暗号化通信を行うにあたって必要な情報を交換し、暗号化通信を確立します。 SSL/TLS ハンドシェイクにて、クライアントとサーバー間で暗[…]
イベント ID 36874 の概要
システム イベント ログに以下のようなエラー ログが記録されていることがあります。
ソース: Schannel
日付: YYYY/MM/DD HH:MM:SS
イベント ID: 36874
タスクのカテゴリ: なし
レベル: エラー
キーワード:
ユーザー: SYSTEM
コンピューター: <コンピューター名>
説明:
リモート クライアント アプリケーションから TLS 1.2 接続要求を受信しましたが、クライアントでサポートされている暗号スイートがサーバーでサポートされていません。TLS 接続要求は失敗しました。
このエラー ログは SSL/TLS 通信の確立に失敗したことを示すエラー ログです。
SSL/TLS 通信が開始されるタイミングで問題が発生し、SSL/TLS 通信の確立に失敗しています。
TLS 通信の要求を受信したものの、Client Hello で提示されている暗号スイートの一覧が利用できなかったために、TLS 通信の確立を中断したことを示しています。TLS 通信は開始される前に、TLS ハンドシェイクというフローで、TLS 通信に使用する暗号スイートを決定します。ID 36874 では、TLS ハンドシェイクにおいて、通信要求を行ったクライアントと共通して利用可能な暗号スイートがなかったことを示すイベント ログとなります。
このエラー ログの原因となった SSL/TLS 通信が、不要な通信である可能性もあります。
そのため、このエラー ログが記録されたタイミングにおいて、特に問題が発生していない場合は無視して問題ありません。
例えば、HTTPS サイトにアクセスできない、リモートデスクトップ接続できない等の問題が発生している場合です。
その場合、ID 36874 エラー ログをもとに原因調査を進めることができます。
原因
イベント ID 36874 エラーは、TLS 通信の要求を受信したものの、Client Hello で提示されている暗号スイートの一覧が利用できなかったために、TLS 通信の確立を中断したことを意味する警告ログです。
SSL/TLS 通信では、暗号化通信を開始する前に SSL/TLS ハンドシェイクと呼ばれる通信相手とのネゴシエーションを行います。これは通信相手がお互い利用可能なアルゴリズムの情報を共有して、実際に通信で利用するアルゴリズムを選定するための仕組みとなります。
この SSL/TLS ハンドシェイクにおいて、通信相手で Client Hello にて提示してきた暗号スイートの中に、サーバー自身が利用できる暗号スイートがないことを意味しています。この問題を解決するためには、クライアントとサーバーの双方が利用可能な暗号スイートを利用できるようにすることで問題は解決します。
暗号スイートの仕組みや Windows OS での各設定については、以下の記事で紹介しております。
SSL/TLS にてデータを暗号化して通信を行うには、自分自身と通信相手の両方が利用可能なアルゴリズムを使う必要があります。 不特定の相手と両者が利用可能なアルゴリズムを確認しあうために使われるのが 暗号スイート(cipher suite[…]
解析方法
イベント ID 36874 エラーの原因を調査する場合、Client Hello のパケットを解析して提示されている暗号スイートの一覧を確認する必要があります。SSL/TLS 通信のパケットの解析には Wireshark がおすすめです。
オープンソースのパケット解析ツール:Wireshark
https://www.wireshark.org/
Wireshark をインストールしたら、パケットの採取を開始して対象の通信を確認します。Wireshark のフィルターに tls と入力すれば、SSL/TLS プロトコルで暗号化されたパケットのみが表示されるようになります。イベント ID 36874 エラーが記録されたタイミングに送信されてきている Client Hello のパケットに着目します。
Wireshark のフィルター:
WireShark 上で “Client Hello” と表示されているパケットの “TLS(Transport Layer Security)” と表示されているレイヤーの中身を確認します。その中の “Cipher Suite” の項目に含まれる一覧が、クライアント側がサポートしている暗号スイートの一覧となります。
Client Hello:
イベント ID 36874 は、エラーが記録された端末が、この Client Hello に含まれている暗号スイートのどれにも対応していないことを意味しています。
対処策
イベント ID 36874 エラーの要因となった Client Hello に含まれている暗号スイートを確認して、自身の端末でも暗号スイートが利用できるように設定を見直します。Windows OS での暗号スイートの設定方法は、レジストリおよびグループ ポリシーにて行えます。利用可能な暗号スイートは複数あり、優先順位の高い(より利用してほしい暗号スイートの)順で並べて設定されています。
今回、Client Hello に含まれている暗号スイートのどれも、暗号スイートの設定に含まれていない可能性があります。そのため、サーバー側の端末でも利用できる暗号スイートを設定して、SSL/TLS 通信ができるように構成します。
例えば、以下の設定がされていた場合、暗号スイートの設定順序は以下の通りです。
設定:<暗号スイート A>, <暗号スイート B>, <暗号スイート C>
優先順位:暗号スイート A ⇒ 暗号スイートB ⇒ 暗号スイート C
レジストリでの設定
設定を変更する端末上で、レジストリ エディターにより以下のレジストリ キーにより暗号スイートを設定できます。
値:Functions
型:MULTI_SZ
設定値:以下のようなフォーマットで定義します。
<暗号スイート A (優先順位: 高)>
<暗号スイート B>
<暗号スイート C>
<暗号スイート D (優先順位: 低)>
※ レジストリにより暗号スイートの設定を変更した場合は、設定を反映させるためには OS を再起動させる必要があります。
グループ ポリシーでの設定
グループ ポリシーにも暗号スイートを設定するポリシーが存在します。ポリシーの方で暗号スイートの設定を行うと、レジストリの設定よりも優先されます。
ポリシー パス:[コンピュータの構成] – [ポリシー] – [管理用テンプレート] – [ネットワーク] – [SSL 構成設定] – [SSL 暗号の順位]
設定値:以下のようなフォーマットで定義します。
<暗号スイート A (優先順位: 高)>,<暗号スイート B>,<暗号スイート C>,<暗号スイート D (優先順位: 低)>
※ ポリシーの暗号スイートの設定を反映させるためには、ポリシーが適用された後にOS を再起動させる必要があります。
ポリシーの設定が行われている場合、ポリシーの配布先の端末に以下のレジストリ パスに設定値が保存されます。
もしポリシーにより暗号スイートの設定を行われている場合、ローカルのレジストリ設定よりもポリシーの設定の方が優先されます。