HOME»情報処理安全確保支援士掲示板»TLSのサーバ証明書とSNIの比較
投稿する

[1423] TLSのサーバ証明書とSNIの比較

 4月受けますさん(No.1) 
支援士R4に以下の内容が書かれていました。

「TLS通信では、接続先のSNIであるwww.y-sha.domと、サーバ証明書のCNに記載されたwww.y-sha.domが一致しているかを確認します。」

これは事実でしょうか?
一致しているか確認するのはクライアント(ブラウザ)の実装次第で、TLSにそんな決まりはないと思っていました..

お詳しい方がいらっしゃいましたら教えていただきたいです。
2024.03.18 22:03
pixさん(No.2) 
SC ダイヤモンドマイスター
>「TLS通信では、接続先のSNIであるwww.y-sha.domと、サーバ証明書のCNに
>記載されたwww.y-sha.domが一致しているかを確認します。」
>これは事実でしょうか?
>一致しているか確認するのはクライアント(ブラウザ)の実装次第で、
>TLSにそんな決まりはないと思っていました..
以下の文章は
「TLS通信では、接続先のSNIであるwww.y-sha.domと、サーバ証明書のCNに
記載されたwww.y-sha.domが一致しているかを【クライアント側で】確認します。」
という意味ではないでしょうか。

SNIとは「ServerNameIndicator」のことです。
Webサーバ側でHTTPリクエストのHostヘッダを基にバーチャルホストを
識別する機能です。

また、バーチャルホスト名(FQDN)とサーバ証明書のCNの一致の検査は、
クライアント側で証明書の検証時に行われます。

したがって、以下のように文章を変更すれば分かりやすくなると思います。
「TLS通信では、クライアント側で証明書の検証として、
接続先バーチャルホスト名www.y-sha.domと、サーバ証明書のCNに
記載されたwww.y-sha.domが一致しているかを確認します。」
2024.03.18 22:18
 4月受けますさん(No.3) 
ご返信ありがとうございます。

>SNIとは「ServerNameIndicator」のことです。
Webサーバ側でHTTPリクエストのHostヘッダを基にバーチャルホストを
識別する機能です。

いえ、SNIはTLSの拡張仕様のことです。
具体的にはClient Helloのパケット内のServer Name Indicate extensionに含まれるServerNameのことをさしています。

また、TLSにはCNとSNIを比較する仕様は無いと思いますが、こちらに対する回答はいかがでしょうか?
2024.03.19 15:27
pixさん(No.4) 
SC ダイヤモンドマイスター
>いえ、SNIはTLSの拡張仕様のことです。
>具体的にはClient Helloのパケット内のServer Name Indicate extensionに含まれる
>ServerNameのことをさしています。
すみません。私がHTTPのVertualHostとHTTPSのSNIを混同していたようです。

>また、TLSにはCNとSNIを比較する仕様は無いと思いますが、こちらに対する回答は
>いかがでしょうか?
そういう意味ですと、
「TLS通信では、接続先のSNIであるwww.y-sha.domと、サーバ証明書のCNに記載された
www.y-sha.domが一致しているかを確認します。」
という文言は、
「Webサーバ側で複数所持しているデジタル証明書を、SNIによって適切な1枚の
デジタル証明書を選ぶ」
という意味ではないでしょうか。
それ以上のことは申し訳ありませんが、最初の文言の表現が不適切か、私の知識不足の
どちらかと思われます。
2024.03.19 15:57
wrinklyさん(No.5) 
横から失礼します。

調べてみました。
>「TLS通信では、接続先のSNIであるwww.y-sha.domと、サーバ証明書のCNに記載された
>www.y-sha.domが一致しているかを確認します。」
の意味ですが、
①Webブラウザ(クライアント)が、ClientHelloで、<SNI>で接続先サーバ
  (www.y-sha.dom)を指定して送信
②Webサーバが、SNIで指定されたサーバ(www.y-sha.dom)に基づいて、
  ServerHelloで、サーバ(www.y-sha.dom)のサーバ証明書
  (CNにwww.y-sha.domが設定されている)を送信
③Webブラウザ(クライアント)が、接続先であるSNIで指定したwww.y-sha.domと、
  サーバ証明書のCNに記載されたwww.y-sha.domが一致しているかを確認
ということだと思います。

<補足>
 Webサーバがバーチャルホスト(1台のサーバで複数のWebサーバが動作)の場合、
 Webブラウザが<SNI>で指定した接続先に応じたサーバ証明書を使い分けて送信します。
2024.03.19 16:45
 4月受けますさん(No.6) 
pixさん
wrinklyさん

ご回答ありがとうございます。
私も改めて調べ直してみたのですが、TLSの中でクライアント側でSNIとサーバ証明書のCNを比較する動作の情報はTLSのRFC上では見つけられませんでした...
私の質問も誤解を招いてしまうような内容で失礼しました。

wrinklyさん
①-③の流れを記載いただきましたが、この動作はTLSの仕様ですかね?
それともただのクライアントの実装でしょうか?
2024.03.19 18:44
wrinklyさん(No.7) 
>①-③の流れを記載いただきましたが、この動作はTLSの仕様ですかね?
>それともただのクライアントの実装でしょうか?
TLSの仕様にどこまで含まれるのかはすみません、わかりません。
①-③の流れの記載は、
「セキュリティ技術の教科書 第3版」の
P348 9.1.1 (10)TLSの拡張仕様
にあった説明を引用しました。
2024.03.19 19:31
橙色文書さん(No.8) 
R4春秋の問題冊子を持っていますが、指定が「R4」だけでは当該箇所を探す気にもなれません。
2024.03.19 20:44
GinSanaさん(No.9) 
SC ブロンズマイスター
橙色文書さん(No.8) 
たぶん支援士R4は、書籍名のことだと思います(左門至峰の本)。
2024.03.19 23:32
wrinklyさん(No.10) 
>①-③の流れを記載いただきましたが、この動作はTLSの仕様ですかね?
>それともただのクライアントの実装でしょうか?
上記は、あくまでWebブラウザとWebサーバ間の話で、TLSはそれ以外にも
使われるので、SNIとデジタル証明書のCNの一致を検証するかは
アプリケーション次第でケースバイケース(?)だと思います。
違っていたらどなたか指摘してください。
2024.03.20 07:49

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。
© 2014-2024 情報処理安全確保支援士ドットコム All Rights Reserved.

Pagetop