apache - 在 Apache Web 服务器上配置 2 路 SSL 客户端身份验证

标签 apache ssl client-certificates

想获得一些关于设置简单的 2 路 apache SSL 的建议。

我们已经使用 openSSL 创建了一个 key 文件和 csr 请求。然后我们将其提交给 CA,并收到了一个 crt 文件和 CA 的 crt 文件。

我们已经配置了 apache http.conf 文件,并在加载 mod_ssl 模块后添加了以下参数。

SSLEngine开启

SSLCACertificateFile/local/fast/fcHome/deployment/apache01/conf/ssl.crt/ca.crt - 随证书一起收到的 CA 根证书

SSLCertificateFile/local/fast/fcHome/deployment/apache01/conf/ssl.crt/server.crt - 从 CA 为服务器接收的 crt 文件

SSLCertificateKeyFile/local/fast/fcHome/deployment/apache01/conf/ssl.key/server.key - 用于生成 csr 的 key 文件

SSLVerifyClient要求

SSLVerifyDepth 10

然后我们有一个客户端也使用由同一 CA 签名的证书尝试连接到 https 服务。客户端在连接时收到 SSL 握手错误。

apache 错误日志显示如下:

ssl_engine_kernel.c(1884): OpenSSL: Write: SSLv3 read client certificate B ssl_engine_kernel.c(1903):OpenSSL:退出:SSLv3 读取客户端证书 B 时出错 ssl_engine_kernel.c(1903):OpenSSL:退出:SSLv3 读取客户端证书 B 时出错 SSL 库错误:336105671 错误:140890C7:SSL 例程:SSL3_GET_CLIENT_CERTIFICATE:对等方未返回证书 没有服务器已知的 CA 用于验证?

我似乎无法弄清楚这是为什么。是否有可能即使客户端证书由 Versign 签名,它也与服务器的 CA.crt 文件不匹配?

任何帮助将不胜感激

最佳答案

SSLCACertificateFile 必须包含您客户的证书颁发机构证书以及任何中间证书文件,所有这些都串联在一起。

您还缺少 SSLCertificateChainFile,它必须指向一个文件,该文件包含您的服务器的证书颁发机构证书以及任何中间证书文件,所有这些都串联在一起。

很明显,客户端(浏览器)必须安装自己的客户端证书。

注意:从 2.4.8 版本开始,作为官方 apache 文档,SSLCertificateChainFile已过时(感谢 ezra-s 的评论)。现在可以将服务器证书和 CA 中间证书直接连接到 SSLCertificateFile 中。

关于apache - 在 Apache Web 服务器上配置 2 路 SSL 客户端身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16967660/

相关文章:

ssl - TLSv1.2+BouncyCaSTLe+Apache httpclient 4.4

apache - 如何在 .htaccess 中设置代理

linux - IDE如何使/var/www内容可编辑

python - 在 Windows 7 上运行的 WAMP 服务器上安装 mod_wsgi

apache - svn 无密码身份验证 - 使用 SSL 信任

JAVA - SSL - 客户端证书

apache - 我可以安全地杀死大量的/usr/sbin/apache2 -k 启动 PID 吗?

java - GIT 客户端如何处理存储库的错误 SSL 设置?

web-services - 在 Apache Axis 1 中使用客户端证书

python - AWS 物联网数据 : CERTIFICATE_VERIFY_FAILED