您能否使用在 Windows 2012 R2/2016 伺服器上安裝主題備用名稱 (SAN) 伺服器證書來啟用 LDAP?
回答來自 r/sysadmin 的文章,但我沒有足夠的業力來自我回答:
您能否使用在 Windows 2012 R2/2016 伺服器上安裝主題備用名稱 (SAN) 伺服器證書來啟用 LDAP?
或者,所有 DC 都需要自己的 SSL 證書嗎?
我粗略的閱讀使我相信每個 DC 都需要自己的證書,並且不能將所有 DC 名稱填充到單個 SAN 證書的備用名稱欄位中,然後將其安裝在所有 DC 上。
以前,DC 使用特殊格式的通用(跨所有 DC)自簽名證書來啟用 LDAPS,以便數據中心中的 APC 進行身份驗證。思科 UCS 不接受用於創建“信任點”的自簽名證書。為了為 UCS 啟用相同的功能,已確定必須連結所使用的證書。測試表明,主機證書連結到的根證書是有效 CA 還是自簽名 CA 並不重要。因此,我們決定創建一個新的自簽名 CA,然後簽署 DC LDAP 證書。這是相當標準的,除了 LDAPS 跨域名訪問的多個域控制器執行所需的主題備用名稱 (SAN) 的特殊要求。
已盡最大努力通過 Windows 工俱生成所需的證書,但是,如果可能的話,它的文件記錄太差,以至於我們確定在 linux 機器上生成它們並隨後將它們複製到域中會很快。*下面的方法允許使用“openssl x509”的“迷你 CA”*功能(https://www.openssl.org/docs/apps/x509.html#SIGNING-OPTIONS )來生成證書,而無需設置完整的 CA 結構)。
按照標準程序為 CA 證書和 CA 證書本身生成私鑰:
openssl genrsa -des3 -out ldapCA.key 4096 openssl req -x509 -new -nodes -key ldapCA.key -days 3650 -out ldapCA.pem
為包含支持 SAN 所需的v3_req部分的主機 LDAP 證書創建證書配置文件:
[請求] 區分名 = req_distinguished_name req_extensions = v3_req 提示=否 [req_distinguished_name] C = 美國 ST = NC L = XXX O = YYY 或 = ZZZ CN = [v3_req] 基本約束 = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth 主題AltName = @alt_names [替代名稱] DNS.1 = DNS.2 = DNS.3 = DNS.4 = DNS.5 =
在使用上述請求配置生成正確證書多次失敗後,我們發現openssl的x509選項不會從 CSR 複製副檔名(http://openssl.6102.n7.nabble.com/Unable-to-create -Version-3-certificates-with-subjectAltName-using-my-own-CA-td46753.html#a46755 )
OpenSSL 有兩種方法可以從 CSR 創建證書: 'ca' # 原來最全的方式 'x509 -req' # 一種沒有'database' 等的簡化方式。 只有 'ca' 完全使用配置文件設置,特別是 copy_extensions。'x509 -req' 可以使用配置文件 擴展,但僅此而已。 如果要從 CSR 複製擴展,請使用“ca”。 您*可以*使用'x509 -req'並在'x509 -req'時間(不是'req -new'時間)將包括SAN的副檔名放入配置文件中, 這對於與 CA 相關的擴展(如 crldp)很有用,但您通常希望 SAN 因每個證書而異。
為了解決這個問題,我們需要創建一個僅帶有副檔名的第二個文件:<
基本約束 = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth subjectAltName = DNS:, DNS:, DNS:,DNS:,DNS:
目前尚不清楚是否需要在 CSR 和擴展文件中包含相同的數據,但它在兩者中都可以使用。此時,我們可以使用 CA、CA 密鑰、證書請求文件和擴展文件生成主機證書,然後驗證生成的證書:
openssl x509 -days 1460 -req -CA ldapCA.pem -CAkey ldapCA.key -CAcreateserial -in ldapSAN.csr -out ldapSAN.pem -extfile ext.txt openssl x509 -text -noout -in ldapSAN.pem
驗證的輸出應該顯示它是一個 v3 證書,由 CA 簽名,並且應該顯示用每個 DC 的 FQDN 填充的 SAN 部分:
證書: 數據: 版本:3 (0x2) 序列號: () 簽名算法:sha1WithRSAEncryption 發行人:C=、ST=、L=、O=、OU=、CN=/emailAddress= 有效性 不早於:格林威治標準時間 2015 年 3 月 5 日 16:36:10 不晚於:格林威治標準時間 2019 年 3 月 4 日 16:36:10 主題:C=、ST=、L=、O=、OU=、CN= 主題公鑰資訊: [...] X509v3 擴展: X509v3 基本約束: CA:錯誤 X509v3 密鑰用法: 數字簽名、不可否認性、密鑰加密 X509v3 擴展密鑰用法: TLS Web 伺服器身份驗證 X509v3 主題備用名稱: DNS:, DNS:, DNS:, DNS:, DNS: 簽名算法:sha1WithRSAEncryption [...]
為了導入證書並在 DC 上使用它們,我們必須使用 pkcs12(pfx) 格式的私鑰導出主機證書:
openssl pkcs12 -export -out ldapSAN.pfx -inkey ldapSAN.key -in ldapSAN.pem -certfile ldapCA.pem
最後,我們在每個域控制器的機器帳戶的受信任的根證書頒發機構儲存中安裝 CA 證書的公共版本,在本例中為*ldapCA.pem 。*這可以通過遠端管理工具、在每台伺服器上本地或通過 GPO 來完成。然後我們在每台伺服器上安裝主機證書和私鑰。這必須在本地完成,因為無法遠端導入帶有私鑰資訊的 pfx:
CERTUTIL -f -p <密碼> -importpfx ldapSAN.pfx
此時,DC 可能會自動獲取證書 ( http://support.microsoft.com/kb/321051 ):
最後,如果 Windows Server 2008 或更高版本的域控制器在其儲存中發現多個證書,它 自動選擇到期日期最遠的證書。那麼,如果您目前的證書是 臨近到期日,您可以將替換證書放在商店中,AD DS 會自動切換 使用它。
在我們的例子中,由於以前的證書在新證書之後有過期日期,我們必須在每個域控制器使用新證書之前刪除舊證書。您可以使用以下方法驗證 LDAP 服務正在使用的證書(NAGIOS 也對此進行了檢查):
openssl s_client -connect <FQDN of DC>:636 -showcerts
輸出將包含與我們上面所做的證書驗證類似的資訊。
此時,您可以將公共證書提供給需要它們的任何客戶端。有些可能只需要 CA,有些可能只需要主機證書,有些可能需要包含整個鏈的單個文件。
SR 已重新配置 UCS 和 APC 以連接新證書。
w00t