2014-12-02 116 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