我有 2 个不同的应用程序。
1) tools.helpme.com 要求用户提供客户端证书!
SSLCACertificateFile /usr/local/etc/apache22/certs/cacert.pem
SSLCertificateKeyFile /usr/local/etc/apache22/certs/server.key
SSLCertificateFile /usr/local/etc/apache22/certs/server.crt
SSLCertificateChainFile /usr/local/etc/apache22/certs/server.crt
SSLVerifyClient require
2) apps.helpme.com 仅需要来自服务器的基本 SSL!
SSLCACertificateFile /usr/local/etc/apache22/certs/cacert.pem
SSLCertificateKeyFile /usr/local/etc/apache22/certs/server.key
SSLCertificateFile /usr/local/etc/apache22/certs/server.crt
SSLCertificateChainFile /usr/local/etc/apache22/certs/server.crt
SSLVerifyClient none
我让他们每个人都独立工作 - 这是完美的。
但是,我无法让它们一起运行,它们位于不同的 VirtualHosts - 基于名称的托管上。
如果我尝试同时运行它们,似乎 (2) 优先并且有效,但 (1) 获得 GATEWAY_TIMEOUT! 该虚拟主机的错误日志显示:重新协商握手失败:客户端未接受!?
最佳答案
您需要两个不同 IP 地址上的站点,因为 SSL 握手发生在发送 HOST http header 之前。尽管使用相同的 IP,您可以在不同的端口号上运行,但这对两个不同的 Web 服务真的没有帮助吗?
关于使用 VirtualHosts 的 Apache 2 类型 SSl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3573616/