2014-12-02 114 views
0

我已經配置Apache將需要一個客戶端證書使用通過SSL訪問端口443上 資源:SSL客戶端身份驗證使用智能卡

<VirtualHost _default_:443> 

    [other stuff] 

    SSLEngine on 

    SSLProtocol all -SSLv2 
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW 

    SSLCertificateFile /PATH_TO_CERTS/server.crt 
    SSLCertificateKeyFile /PATH_TO_PRIVATE/server.key 
    SSLCACertificateFile /PATH_TO_CERTS/ca.cer 

    SSLVerifyClient require 
    SSLVerifyDepth 10 
    SSLOptions +StdEnvVars +ExportCertData 

    [other stuff] 

</VirtualHost> 

當我建立簽名的CA自我,並用它來發出一個客戶端證書 給客戶端我沒有問題,SSL客戶端認證是實現的。

但是,我真正想要做的是要求由第三方信任的CA頒發的 客戶端證書,該證書頒發了 智能卡形式的證書。因此,我所做的是將SSLCACertificateFile 更改爲/PATH_TO_CERTS/ca-bundle.crt,其中包含一系列CA證書 ,其中包括中間智能卡頒發CA及其根CA.這些CA的的 主體和發行人值是:

Root CA: 
    subject= /C=US/O=U.S. Government/OU=EXAMPLE DEPARTMENT/OU=Certification Authorities/OU=EXAMPLE DEPARTMENT Root CA 
    issuer= /C=US/O=U.S. Government/OU=EXAMPLE DEPARTMENT/OU=Certification Authorities/OU=EXAMPLE DEPARTMENT Root CA 

    Intermediate CA issuing cert: 
    subject= /C=US/O=U.S. Government/OU=EXAMPLE AGENCY/OU=Certification Authorities/OU=EXAMPLE AGENCY Operational CA 
    issuer= /C=US/O=U.S. Government/OU=EXAMPLE DEPARTMENT/OU=Certification Authorities/OU=EXAMPLE DEPARTMENT Root CA 

我希望Apache將接受來自客戶端的有效的智能卡證書, 然而相反的,我得到了以下錯誤:「證書驗證: 錯誤(20):無法獲得本地發行人證書「。

我不知道該怎麼做。是否可能我正在做點什麼 錯誤或者「SSLVerifyClient require」只與本地建立的CA頒發的客戶端證書 一起工作?

任何有關此事的見解將不勝感激。

我在RHEL6上運行Apache 2.2。

回答

0

也許你需要將這行添加到您的Apache的conf:

SSLCertificateChainFile /PATH_TO_CERSTS/intermediateCA.crt