apache - 使用智能卡的 SSL 客户端身份验证

标签 apache ssl certificate smartcard client-certificates

我已将 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/

相关文章:

ubuntu - 无法使用 Let's Encrypt 在我的网站上安装 SSL

java - 使用 selenium webdriver + phantom 时无法加载 https url

python - (Python) 将证书添加到 Bottle 服务器

linux - Apache2 - 添加子域时遇到问题

c - 在 Web 服务器端使用用 C 编写的 CGI 脚本的缺点?

php - 创建动态子域

Apache 访问控制允许 woff2 文件类型的来源问题

java - netflix-zuul 和带有证书的微服务之间的身份验证

security - 确保无需凭据的客户端/服务器身份验证

ssh - 从 PKCS12 文件中提取公钥/私钥以便稍后在 SSH-PK-Authentication 中使用