Windows server 2012 Sub CA 失敗,因為在使用來自 Linux/OpenSSL 根 CA 的根 CA 證書時吊銷處於離線狀態
我一直在使用 Linux(Debian 9 with OpenSSL)根證書頒發機構和 Windows server 2012 R2 從屬證書頒發機構設置兩層 PKI 的實驗室。
當我嘗試在 Windows 伺服器上安裝已簽名的從屬證書時,我首先收到一條警告,指出無法驗證根 ca。我點擊“確定”以忽略 ADCS 未啟動之後的警告。當我手動啟動 ADCS 時,我收到錯誤消息;
“由於吊銷伺服器離線,吊銷功能無法檢查吊銷”
我認為問題在於我如何指向 Linux 根 CA 上的 CRL 分發點和 AIA,或者我如何在 Windows 伺服器上設置 IIS(可能兩者兼有)。
設置
- rootca:Linux Debain 9 作為根證書頒發機構
- testpki:Windows Server 2012 R2 作為從屬證書頒發機構/IIS
- dc0:Windows Server 2012 R2 作為域控制器
Linux
我在 rootca 上設置了一個自定義 OpenSSL 配置文件,添加了這些行;
authorityInfoAccess = caIssuer;URI:http://testpki.example.com/crld/root.cer crlDistributionPoints = URI:http://testpki.example.com/crld/root.crl
到配置文件的 v3_ca 和 v3_intermediate_ca 部分。
視窗
我為“testpki.example.com”設置了一個 DNS 記錄,用於在 dc0 上進行名稱解析。
Linux 框中的根證書被導入到 testpki 上的證書頒發機構管理單元中的受信任的根證書頒發機構目錄中。
在 testpki 上安裝 IIS 後,我使用別名 crld 設置了一個虛擬目錄,並將根證書和 CRL 複製到該目錄。
輸入 URL“testpki.example.com/crld”時,我能夠連接到 IIS,但如果我輸入 URL“testpki.example.com/crld/root.cer”,即使“root. cer”顯示在“../crld”頁面索引中。
其餘的設置是按照本指南完成的:Using openssl as a root ca for windows
任何見解將不勝感激。
-謝謝
certutil -verify -urlfetch ..\subca.cer 輸出
發行人: CN=範例-TESTPKI-CA 名稱雜湊(sha1):e6c59398cbed5b994ff33c6e6380312fe2ad9a4a 名稱雜湊(md5):b0f8c7beb298a3ba230f71fbc927b386 學科: CN=example-TESTPKI-CA-Xchg 名稱雜湊(sha1):86f6ae3e12a21350005b9d70b1229ecb1b78dd0b 名稱雜湊(md5):dd1324e864c4233d2f87e9c0c342dfcd 證書序列號:4b0000000478b909e350cb7280000000000004 dwFlags = CA_VERIFY_FLAGS_CONSOLE_TRACE (0x20000000) dwFlags = CA_VERIFY_FLAGS_DUMP_CHAIN (0x40000000) ChainFlags = CERT_CHAIN_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT (0x40000000) HCCE_LOCAL_MACHINE CERT_CHAIN_POLICY_BASE -------- CERT_CHAIN_CONTEXT -------- ChainContext.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100) ChainContext.dwErrorStatus = CERT_TRUST_REVOCATION_STATUS_UNKNOWN (0x40) ChainContext.dwErrorStatus = CERT_TRUST_IS_OFFLINE_REVOCATION (0x1000000) SimpleChain.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100) SimpleChain.dwErrorStatus = CERT_TRUST_REVOCATION_STATUS_UNKNOWN (0x40) SimpleChain.dwErrorStatus = CERT_TRUST_IS_OFFLINE_REVOCATION (0x1000000) CertContext[0][0]:dwInfoStatus=102 dwErrorStatus=0 發行人:CN=example-TESTPKI-CA NotBefore: 2018 年 2 月 7 日下午 3:37 之後:2018 年 2 月 14 日下午 3:47 主題:CN=example-TESTPKI-CA-Xchg 序列號:4b0000000478b909e350cb7280000000000004 模板:CAExchange a13e6c1703f95408910d21dc380818b23c76e79f Element.dwInfoStatus = CERT_TRUST_HAS_KEY_MATCH_ISSUER (0x2) Element.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100) ---------------- 證書 AIA ---------------- 錯誤頒發者“證書(0)”時間:0 [0.0] ldap:///CN=example-TESTPKI-CA,CN=AIA,CN=Public%20Key%20Services, 服務,CN=配置,DC=example,DC=com?cACertificate?base?objectCla 認證機構 吊銷檢查失敗“證書(1)”時間:0 [0.1] ldap:///CN=example-TESTPKI-CA,CN=AIA,CN=Public%20Key%20Services, 服務,CN=配置,DC=example,DC=com?cACertificate?base?objectCla 認證機構 ---------------- 證書 CDP ---------------- 已驗證“基本 CRL (02)”時間:0 [0.0] ldap:///CN=example,CN=com,CN=CDP,CN=Public%20Key% ervices,CN=Services,CN=Configuration,DC=example,DC=com?certificateRevoca nList?base?objectClass=cRLDistributionPoint 驗證“Delta CRL (02)”時間:0 [0.0.0] ldap:///CN=example-TESTPKI-CA,CN=testpki,CN=CDP,CN=Public%20Ke 0Services,CN=Services,CN=Configuration,DC=example,DC=com?deltaRevocation t?base?objectClass=cRLDistributionPoint ---------------- 基礎 CRL CDP ---------------- OK "Delta CRL (02)" 時間: 0 [0.0] ldap:///CN=example-TESTPKI-CA,CN=testpki,CN=CDP,CN=Public%20Key% 服務,CN=Services,CN=Configuration,DC=example,DC=com?deltaRevocationLi base?objectClass=cRLDistributionPoint ---------------- 證書 OCSP ---------------- 沒有網址“無”時間:0 -------------------------------- CRL 02: 發行人:CN=example-TESTPKI-CA 本次更新:2018 年 2 月 7 日下午 3:52 下一次更新:2/15/2018 4:12 AM 7f6e7f6f4d13cd98164e53d35ce406e2dde3dd3a 三角洲 CRL 02: 發行人:CN=example-TESTPKI-CA 本次更新:2018 年 2 月 7 日下午 3:52 NextUpdate: 2/9/2018 4:12 AM 07de3204292fbc0ab4a42cfef02b6b4837a78529 應用程序[0] = 1.3.6.1.4.1.311.21.5 私鑰存檔 CertContext[0][1]:dwInfoStatus=102 dwErrorStatus=1000040 發行人:CN=rootca NotBefore: 2018 年 2 月 7 日下午 1:17 之後:2023 年 2 月 6 日下午 1:17 主題:CN=example-TESTPKI-CA 序列號:1000 d74fdf7e86c80171e91dd72a16a1f8f72c9666a3 Element.dwInfoStatus = CERT_TRUST_HAS_KEY_MATCH_ISSUER (0x2) Element.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100) Element.dwErrorStatus = CERT_TRUST_REVOCATION_STATUS_UNKNOWN (0x40) Element.dwErrorStatus = CERT_TRUST_IS_OFFLINE_REVOCATION (0x1000000) ---------------- 證書 AIA ---------------- “友邦保險”失敗時間:0 檢索 URL 時出錯:不支持該請求。0x80070032 (WIN32: 50 ROR_NOT_SUPPORTED) testpki.example.com/crld/root.cer ---------------- 證書 CDP ---------------- 失敗的“CDP”時間:0 檢索 URL 時出錯:未找到 (404)。0x80190194 (-2145844844 HTTP_E_STA _未找到) http://testpki.example.com/crld/rootca.crl ---------------- 證書 OCSP ---------------- 沒有網址“無”時間:0 -------------------------------- CertContext[0][2]:dwInfoStatus=10a dwErrorStatus=0 發行人:CN=rootca NotBefore: 2/7/2018 12:54 PM 之後:2023 年 2 月 6 日下午 12:54 主題:CN=rootca 序列號:94cb4df27b1cb5a3 99a30cec9d5dbc21afe5e4b679e5db844f7a9dd0 Element.dwInfoStatus = CERT_TRUST_HAS_KEY_MATCH_ISSUER (0x2) Element.dwInfoStatus = CERT_TRUST_IS_SELF_SIGNED (0x8) Element.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100) ---------------- 證書 AIA ---------------- “友邦保險”失敗時間:0 檢索 URL 時出錯:不支持該請求。0x80070032 (WIN32: 50 ROR_NOT_SUPPORTED) testpki.example.com/crld/root.cer ---------------- 證書 CDP ---------------- 失敗的“CDP”時間:0 檢索 URL 時出錯:未找到 (404)。0x80190194 (-2145844844 HTTP_E_STA _未找到) http://testpki.example/crld/rootca.crl ---------------- 證書 OCSP ---------------- 沒有網址“無”時間:0 -------------------------------- 排除葉子證書: a7b797168cbc0ff36636479d8cd2de6f2b184355 全鏈條: 7e1caac607a7a5b087b491accf72df2f8d4cf06e 發行人:CN=example-TESTPKI-CA NotBefore: 2018 年 2 月 7 日下午 3:37 之後:2018 年 2 月 14 日下午 3:47 主題:CN=example-TESTPKI-CA-Xchg 序列號:4b0000000478b909e350cb7280000000000004 模板:CAExchange a13e6c1703f95408910d21dc380818b23c76e79f 吊銷功能無法檢查吊銷,因為吊銷 rver 離線。0x80092013 (-2146885613 CRYPT_E_REVOCATION_OFFLINE) ------------------------------------ 已跳過吊銷檢查 -- 伺服器離線 葉證書吊銷檢查通過 CertUtil: -verify 命令成功完成。
好的,現在好多了。你在這裡有很多問題:
Wrong Issuer "Certificate (0)" Time: 0 [0.0] ldap:///CN=example-TESTPKI-CA,CN=AIA,CN=Public%20Key%20Services, Services,CN=Configuration,DC=example,DC=com?cACertificate?base?objectCla certificationAuthority
此錯誤表明在 Active Directory 中發布了錯誤的 subCA 證書。您必須通過執行以下命令將 subCA 證書重新發佈到 Active Directory:
certutil -dspublish -f SubCA.cer SubCA
現在您的根 CA:
Failed "AIA" Time: 0 Error retrieving URL: The request is not supported. 0x80070032 (WIN32: 50 ROR_NOT_SUPPORTED) testpki.example.com/crld/root.cer
您在 OpenSSL 配置中輸入錯誤的 URL。缺少協議前綴。您需要添加
http://
前綴並重新頒發 SubCA 證書。Failed "CDP" Time: 0 Error retrieving URL: Not found (404). 0x80190194 (-2145844844 HTTP_E_STA _NOT_FOUND) http://testpki.example.com/crld/rootca.crl
這個 URL 看起來是正確的(至少,它包含協議前綴),CA 伺服器可以訪問 web 伺服器,但是 web 伺服器響應 404,表明請求的路徑沒有任何內容。
TBH,你的設置一點都不好。您有太多問題,因為(看起來)沒有計劃設計或沒有驗證計劃。
除了明確的問題之外,您的根 CA 本身還包括冗餘的 CRL 分發點 (CDP) 和授權資訊訪問 (AIA) 擴展。您應該從根證書中刪除它們。不使用 AIA 是為了避免路徑建構期間的循環。不使用根證書中的 CDP,因為雞蛋問題,您無法撤銷根(自簽名)證書。但它們(CDP 和 AIA 擴展)必須包含在頒發的證書(即從屬 CA)中。
我建議您回滾您在這裡所做的一切並從頭開始。
首先,您需要設計您的解決方案,規劃各個方面。
- 辨識將使用證書的應用程序。
- 描述證書要求並規劃證書範圍。
- 基於$$ 2 $$確定您將使用的證書模板及其配置。
- 設計 CA 放置圖並創建證書流程圖(證書註冊、客戶端應用程序驗證)。
- 設計災難恢復計劃,其中將包括備份和恢復計劃。
否則,您的解決方案將一文不值。即使這是測試部署,您仍然必須通過所有這些步驟。
正確規劃 CRT/CRL 發布和下載 URL。您需要檢查兩次,因為如果不重新部署所有證書就無法輕鬆解決這些問題。關於這個主題的一般建議:
- 不要在 CDP/AIA 中使用 LDAP URL。考慮僅使用 HTTP。
- 使用專用 Web 伺服器來提供 CRT/CRL 文件(不要將 SubCA 與 Web 伺服器角色結合使用)。
- 不要在根證書中使用 CDP/AIA 擴展
- 確保所有客戶端(將使用您的證書)都可以訪問 CRT/CRL 文件
關於 CDP/AIA 擴展計劃,我建議查看我的部落格文章:設計 CRL 分發點和授權資訊訪問位置。雖然這篇文章是針對 Microsoft CA 編寫的,但相同的原則適用於任何其他 CA 實現,因為這些是最佳實踐。
您可能想嘗試按照以下方式禁用 CRL 檢查:
certutil –setreg ca\CRLFlags +CRLF_REVCHECK_IGNORE_OFFLINE