【问题标题】:Multiple certificates in TLS handshake "certificate" messageTLS 握手“证书”消息中的多个证书
【发布时间】:2013-04-05 18:07:06
【问题描述】:

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

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

我的问题是,我能否确定服务器名称(在我的情况下为 google.com)将始终出现在第一个证书消息中。如果我只想获取服务器名,是否需要关心证书消息中的其他证书。

【问题讨论】:

  • 顺序可能不同,因此您需要获取所有证书并找到它们中的哪一个是最终实体。

标签: ssl ssl-certificate x509certificate


【解决方案1】:

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

"这是一个 X.509v3 证书的序列(链)。发件人的 证书必须排在列表的首位。以下每一个 证书必须直接证明它前面的那个。”

在 SSL 3.0 中也很清楚:

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

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

【讨论】:

  • 正是这让我感到困惑“发件人的证书必须在列表中排在第一位”。您对重新排序它们的模式有什么建议吗?
  • @KadirErdemDemir,在每个证书中查找颁发者 DN 和主题 DN:证明它前面的证书的以下证书的主题 DN 应该是前一个证书的颁发者 DN。
猜你喜欢
  • 2020-10-11
  • 2018-04-19
  • 2019-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-10
  • 2014-03-03
相关资源
最近更新 更多