Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssl TLS握手中的多个证书”;证书;消息_Ssl_Ssl Certificate_X509certificate - Fatal编程技术网

Ssl TLS握手中的多个证书”;证书;消息

Ssl TLS握手中的多个证书”;证书;消息,ssl,ssl-certificate,x509certificate,Ssl,Ssl Certificate,X509certificate,我的任务是从HTTPS消息解析服务器名称。我被要求从“clienthello”扩展和“certicate”、“commonname”字段解析它 “证书”消息中有多个证书。例如,当使用https打开google并通过wireshark收听时,我看到两个证书,第一个是commonname“*.google.com”,第二个是commonname“google internet authority”。第一个是我连接的服务器名,第二个是签署证书的机构 我的问题是,我是否可以确保服务器名称(在我的例子中是

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

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


我的问题是,我是否可以确保服务器名称(在我的例子中是google.com)将始终出现在第一条证书消息中。如果我只想获取servername,是否需要关心证书消息中的其他证书。

事实上,rfc 2246、4346和5246(分别为TLS 1.0、TLS 1.1和TLS 1.2)都声明服务器证书应该是第一个证书:

“这是X.509v3证书的序列(链)。发件人的 证书必须排在列表的第一位。以下各项 证书必须直接证明其前面的证书。”

在SSL 3.0中也很清楚:

“证书列表:这是X.509.v3的序列(链)
证书,先订购发件人的证书,然后订购
由任何证书颁发机构证书按顺序进行
向上。”


但在现实世界中,有许多配置错误的服务器以任何顺序发送证书,因此您必须对它们进行重新排序,抱歉。

顺序可能会有所不同,因此您需要获取所有证书并查找其中哪一个是最终实体。这让我很困惑“发件人的证书必须在列表中排在第一位”。您是否有重新排序模式的建议。@KadirerDemdimer,在每个证书中查找颁发者DN和使用者DN:以下证书的使用者DN(证明其前面的证书)应该是该证书的颁发者DN。