Dan*_*bbs 8 certificate authentication ssl-certificate certificate-authority apache-2.2
我正在尝试Virtualhost在 apache 中设置部分 a以要求客户端身份验证。该VirtualHost问题也作为实际的Web服务器的反向代理。这是我所做的:
ca.crt、ca.csr和ca.key。VirtualHost如下所示:...
ProxyPass / http://xxx.xxx.xxx.xxx:80/
ProxyPassReverse / http://xxx.xxx.xxx.xxx:80/
ProxyPassReverseCookiePath / /
SSLEngine On
SSLCertificateFile "/private/etc/apache2/server.crt"
SSLCertificateKeyFile "/private/etc/apache2/server.key"
SSLCertificateChainFile "/private/etc/apache2/ca_bundle.crt"
SSLCACertificateFile "/private/etc/apache2/self_ca.crt"
SSLVerifyClient none
SSLOptions StrictRequire
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
<Location /clientauth>
# These options force the client to authenticate with a client certificate.
SSLVerifyClient require
SSLVerifyDepth 1
</Location>
Run Code Online (Sandbox Code Playgroud)
但我无法浏览到/clientauth路径。
Re-negotiation handshake failed: Not accepted by client!?这是使用客户端身份验证和作为反向代理之间的冲突吗?还是我做错了什么?
HTTP 客户端仅在协商 SSL 会话后发送 HTTP 请求,这意味着服务器仅在设置 SSL 后才知道客户端请求的 URL。由于您正在SSLVerifyClient根据 URL更改 的值,因此 Apache 在首次协商 SSL 会话时无法请求客户端证书,而是必须在知道 URL 后强制重新协商会话。问题似乎出在这种重新协商上,因此我建议您通过SSLVerifyClient require在VirtualHost块中设置并将其从Location块中删除来测试它。
这里的根本问题是重新谈判的拒绝。这源于过去一两年中修复 TLS 漏洞的活动,并且在实施新的 TLS 扩展之前,有各种临时修复拒绝重新谈判。因此,您需要做的一件事是确保您的 SSL (OpenSSL) 以及您的 Apache HTTPD 尽可能保持最新。
| 归档时间: |
|
| 查看次数: |
23597 次 |
| 最近记录: |