0

我的任务是从 HTTPS 消息中解析服务器名称。我被要求从“client hello”扩展以及“certicate”、“commonname”字段中解析它。

“证书”消息中有多个证书。例如,当使用 https 打开 google 并通过 wireshark 收听时,我看到 2 个证书第一个有 commonname "*.google.com" ,第二个有 commonname "Google internet authority" 。第一个是我连接的服务器名称,第二个是签署证书的机构。

我的问题是我能否确定服务器名称(在我的情况下为 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 回答