0

私の仕事は、HTTPS メッセージからサーバー名を解析することです。「client hello」拡張機能と「certicate」、「commonname」フィールドから解析するように依頼されました。

「certificate」メッセージに複数の証明書があります。たとえば、https で Google を開き、wireshark でこれを聞くと、最初に共通名 "*.google.com" を持つ 2 つの証明書と、共通名 "Google Internet Authority" を持つ 2 番目の証明書が表示されます。1 つ目は接続したサーバー名、2 つ目は証明書に署名した機関です。

私の質問は、サーバー名 (私の場合は google.com) が常に最初の証明書メッセージに含まれていることを確認できますか? サーバー名のみを取得したい場合、証明書メッセージで他の証明書を気にする必要がありますか?

4

1 に答える 1

2

実際、rfc 2246、4346、および 5246 (それぞれ TLS 1.0、TLS 1.1、および TLS 1.2) はすべて、サーバー証明書が最初のものであるべきであると述べています。

「これは X.509v3 証明書のシーケンス (チェーン) です。送信者の証明書はリストの最初に来る必要があります。後続の各証明書は、その前の証明書を直接認証する必要があります。」

SSL 3.0 でも明らかでした。

" certificate_list: これは X.509.v3
証明書のシーケンス (チェーン) であり、最初に送信者の証明書があり、その後
に任意の認証局の証明書が順番
に上に向かって順番に並べられています。"

しかし、現実の世界では、証明書をどのような順序で送信しても構成が誤っているサーバーが多数あるため、それらを並べ替える必要があります。申し訳ありません。

于 2013-04-05T10:07:06.227 に答える