我已将 Apache 配置为需要客户端证书才能访问 资源通过端口 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 颁发,该 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 要求”仅适用于客户端证书 由本地建立的 CA 颁发?
如能深入了解此事,我们将不胜感激。
我在 RHEL6 上运行 Apache 2.2。
最佳答案
也许您需要将这一行添加到您的 Apache conf 中:
SSLCertificateChainFile/PATH_TO_CERSTS/intermediateCA.crt
关于apache - 使用智能卡的 SSL 客户端身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27257292/