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 年內過期。

相關內容