![](/img/trans.png)
[英]How to use client certificates in Apache httpd to connect to an LDAP for authorization?
[英]Apache httpd: How to trust specific client certificates?
如何配置Apache httpd以信任特定的客戶端證書?
我們需要將對Web服務的訪問限制為特定(已知)合作伙伴的服務器。
我們計划為此使用基於CA的解決方案(一個可靠的CA,只有在我們接受它們時才會簽署值得信賴的CSR); 但是,我們公司的CA不會為外部公司創建證書。
無論如何,為了建立安全連接,在必要的PKI准備好之前,我們希望在Apache httpd代理上配置特定的客戶端證書。
但httpd不接受客戶端的連接,客戶端嘗試使用客戶端證書進行連接,該客戶端證書已添加到為虛擬主機配置的CACertificateFile(以Base64和DER格式(PEM)編碼的串聯x509證書)中。
在這種情況下,客戶端證書不是自簽名證書。
您應該通過SSLCACertificateFile
或SSLCACertificatePath
配置您信任的CA證書,並使用SSLVerifyClient
( optional
或required
,而不是optional_no_ca
,不執行任何身份驗證)來使服務器請求客戶端證書。
如果直接在VirtualHost
部分中使用SSLVerifyClient
,則將在初始握手期間發送客戶端證書。 如果將其放在Directory
/ .htaccess
,則將重新協商客戶端證書。
在初始握手中發送證書時,調試更容易,因為客戶端證書本身不會被加密。 您應該能夠通過使用Wireshark查看流量(在客戶端發送的Certificate
消息中)來查看它。 在調試時,值得檢查服務器發送Certificate Request
消息,並查看其證書頒發機構列表。
問題的典型原因是,如果需要,客戶端無法識別該列表或未在其鏈中發送其中間CA證書的客戶端。
如果您想更具體地授權某些證書,可以檢查變量SSL變量(例如SSL_CLIENT_S_DN_*
)並在SSLRequire
指令中使用它(參見示例 )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.