我已经配置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。