openssl 的证书链从哪里来?

openssl 的证书链从哪里来?

我正在尝试验证 flo2cash.com openssl 的链给了我这个: openssl s_client -showcerts -connect flo2cash.com:443
CONNECTED(00000003) depth=3 C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root depth=2 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Certification Authority depth=1 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Domain Validation Secure Server CA depth=0 OU = Domain Control Validated, OU = Hosted by FreeParking Ltd, OU = COMODO SSL, CN = flo2cash.com

表明根是“AddTrust 外部 CA 根” Chrome 和 Firefox 都只显示链中的 3 个级别,证书根植于“COMODO RSA 证书颁发机构”

如果我检查链中的最后一个证书,我会得到以下信息: subject= /C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority issuer= /C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root notBefore=May 30 10:48:38 2000 GMT notAfter=May 30 10:48:38 2020 GMT

这个证书确实很旧了。

这是我可以在我的机器上找到的 CA 捆绑包(Fedora 25 已修补到最新版本)以及浏览器中的内容:

subject= /C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority issuer= /C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority notBefore=Jan 19 00:00:00 2010 GMT notAfter=Jan 18 23:59:59 2038 GMT

那个旧证书一定来自某个地方。

答案1

在我的 Mint 笔记本电脑上,我有老的证书:

$ openssl x509 -noout -subject -issuer -in /usr/share/ca-certificates/mozilla/COMODO_RSA_Certification_Authority.crt 
subject= /C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority
issuer= /C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority

openssl s_clientCOMODO RSA Certification Authority返回由上述根签名的最高级 CA 证书:

$ openssl s_client -connect flo2cash.com:443
CONNECTED(00000003)
depth=3 C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root
verify return:1
depth=2 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Certification Authority
verify return:1
depth=1 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Domain Validation Secure Server CA
verify return:1
depth=0 OU = Domain Control Validated, OU = Hosted by FreeParking Ltd, OU = COMODO SSL, CN = flo2cash.com
verify return:1
---

编辑/etc/ca-certificates.conf并取消选择包含上述根 CA 证书的行 ( mozilla/AddTrust_External_Root.crt):

#
# line begins with # is comment.
# line begins with ! is certificate filename to be deselected.
#
mozilla/ACCVRAIZ1.crt
mozilla/ACEDICOM_Root.crt
!mozilla/AC_Raíz_Certicámara_S.A..crt
mozilla/Actalis_Authentication_Root_CA.crt
!mozilla/AddTrust_External_Root.crt
mozilla/AddTrust_Low-Value_Services_Root.crt
mozilla/AddTrust_Public_Services_Root.crt
mozilla/AddTrust_Qualified_Certificates_Root.crt

运行update-ca-certificates以重建缓存。

之后,您将获得与浏览器相同的链:

$ openssl s_client -connect flo2cash.com:443 -showcerts
CONNECTED(00000003)
depth=2 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Certification Authority
verify return:1
depth=1 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Domain Validation Secure Server CA
verify return:1
depth=0 OU = Domain Control Validated, OU = Hosted by FreeParking Ltd, OU = COMODO SSL, CN = flo2cash.com
verify return:1
---

客户端从最终实体证书到根 CA 证书构建的路径取决于客户端内编程的逻辑。这在规范中没有定义,因此取决于每个特定客户端的开发人员的解释。

在 OpenSSL 中启用两个根 CA 证书后,它会选择显示的第一个路径。您的浏览器会做出不同的选择,因为它们可以。

答案2

哪个旧证书?这Comodo RSA 证书颁发机构的证书 来自 AddTrust 外部 CA 根由服务器发送。这AddTrust 外部证书必须来自您系统的信任库;它不是由服务器发送的,即使它是 OpenSSL 正确丢弃从服务器接收到的任何根,并且只信任它在本地信任库中找到的根。我不使用 Fedora,但我的 CentOS 安装了它/etc/pki/tls/certs/ca-bundle.crtca-certificates大概 RHEL 也一样)。

是的,此 AddTrust 根是仍处于活动状态的旧 CA 根之一。尽管桥证书在 2000-05-30 10:48:38 之前尚未与其父证书完美(且不切实际地)对齐,但我确信那是回溯的;它使用 SHA384 进行签名,但 FIPS180-2 直到 2002 年才发布,更不用说广泛实施了。 (例如,Windows XP 直到 2008 年 SP3 才实现 SHA2 签名的证书。)

Comodo RSA自己的root没有在 2010-01-19 00:00:00 之前发布,但也可能会回溯,否则它会被搁置一段时间;它也使用 SHA384 进行签名,但 AIR 直到 2014 年初(NIST 的第二次尝试截止日期)才开始进行 SHA2 发行和链,大多数直到 2015 年底,CABforum 和一些主要浏览器开始真正抱怨 SHA1。我不记得 Comodo 在这个范围内的位置,但随着时间的推移,我可以轻松跟踪的一个信任库 Oracle(以前称为 Sun Java)comodorsaca直到 2015 年 6 月 8u51 才添加。 (它有addtrustexternalca回来至少2008-06 年升至 6u7;在此之前我没有数据。)

Comodo 网站的至少一部分仍然显示通过桥证书到 AddTrust 的信任链是正确的,即使它在不到 3 年内过期。

相关内容