我的任务是从HTTPS消息中解析服务器名称。我被要求从“客户端问候”扩展和“certicate”,“commonname”字段解析它。
“证书”消息中有多个证书。例如,当使用https打开谷歌并通过wireshark收听时,我看到2个证书首先具有通用名称“* .google.com”,第二个具有通用名称“Google互联网权限”。第一个是我连接的服务器名称,第二个是签署证书的权限。
我的问题是,我可以确定服务器名称(在我的情况下是google.com)将始终位于第一个证书消息中。如果我只想获取服务器名,是否需要关注证书消息中的其他证书。
答案 0 :(得分:2)
事实上,rfc 2246,4346和5246(分别是TLS 1.0,TLS 1.1和TLS 1.2)都声明服务器证书应该是第一个:
“这是X.509v3证书的序列(链)。发件人的 证书必须在列表中排在第一位。以下各项 证书必须直接证明其前面的证书。“
在SSL 3.0中也很清楚:
“certificate_list:这是X.509.v3的序列(链) 证书,首先按照发件人的证书订购 由任何证书颁发机构证书顺序进行的 向上“。
但在现实世界中,有很多配置错误的服务器以任何顺序发送证书,所以你必须重新排序它们,抱歉。