Ssl-Certificate

MS 證書服務可以從屬於使用 OpenSSL 創建的 CA

  • August 25, 2021

我想為我的域設置企業證書頒發機構。所以我可以為各種目的頒發證書。我想遵循以離線 CA 作為根的最佳實踐,並將我的企業 CA 設置為從屬。但是為這項任務授權一個完整的 Windows 副本似乎很愚蠢。

我希望能夠做的是將一些實時分發安裝到 USB 快閃記憶體盤上,然後安裝 openssl,並在快閃記憶體驅動器上設置我的 CA。當我準備好建構根密鑰/證書時,我將斷開電腦與網路的連接,然後不再在連接網路的電腦上使用該 USB 磁碟。

我是否能夠為 Windows 企業 CA 正確簽名和創建從屬 CA 證書,這將是可用的。我需要與 OpenSSL 一起使用哪些選項來建構 CA 並正確簽署從屬 CA 證書。

我嘗試在網上搜尋,是我能找到的關於這個主題的唯一內容。但它早於 2008 年,我不完全確定這個人是否成功。

是的,它工作得很好;Windows 證書頒發機構對作為非 Windows 根的下屬執行毫無疑慮。

在企業模式下使用 OpenSSL 根和 Windows 2008 R2 從屬進行測試。


與 MS CA 在 OpenSSL 配置中所期望的內容相得益彰的幾件事:

  • 有效的 AIA 和 CDP 位置應適用於根證書,在由自簽名根部分的x509_extensions屬性配置的部分中。[req]這些方面的東西:
authorityInfoAccess = caIssuers;URI:http://test-rootca.test.local/root.pem
crlDistributionPoints = URI:http://test-rootca.test.local/root.crl
  • 預設情況下,給定的 OpenSSL 配置可能不允許從屬 CA。為已簽名的請求更改它(當然,對於不應該是 CA 的請求,請確保它不存在)。這將在該部分的x509_extensions屬性配置的[ca]部分中:
basicConstraints=CA:TRUE
certificatePolicies=2.5.29.32.0

所以,我們會做一個CA來測試。

做你的根:

openssl req -new -x509 -keyout /etc/ssl/private/root.key -out /etc/ssl/certs/root.pem -nodes -extensions v3_ca

擺弄您的配置並在[ca]OpenSSL 配置部分創建必要的文件和目錄。

一切都準備好讓微軟的事情順利進行;使用手動簽名創建 Windows 從屬 CA。

將證書請求上傳到 OpenSSL 伺服器。當您使用它時,請下載根證書。將其導入受信任的根儲存 - 電腦,而不是您的使用者!

頒發下級證書:

openssl ca -in test-subca.req
(you might need to specify a permissive policy manually with -policy, check your config)

如果這不起作用,您的 CA 可能存在配置問題 - 新證書目錄、索引文件、串列文件等。請檢查錯誤消息。

如果它去了,那就是它。如果還沒有,請製作 CRL 並將其放入您在上面配置的 CDP 中;我剛剛安裝了 Apache 並將其卡在了 webroot 中:

openssl ca -gencrl -out /var/www/root.crl

如果還沒有,請將您的證書放在 AIA 位置:

cp /etc/ssl/certs/root.pem /var/www/root.pem

下載新頒發的從屬證書並將其安裝到具有證書頒發機構 MMC 管理單元的 CA。它會抱怨任何與信任或驗證有關的問題,但它在道德上沒有反對接受它。

最終結果; 一個正常工作的 Windows CA,沒有來自 Enterprise PKI 管理單元的抱怨,並且OpenSSL Generated Certificate在屬性中具有說明性。

工作加州

引用自:https://serverfault.com/questions/180085