使用 VirtualHosts 的 Apache 2 类型 SSl

标签 apache ssl openssl virtualhost httpd.conf

我有 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/

相关文章:

Apache 和 Node.js 在同一台服务器上

node.js - SSL/https 从 header 中删除 X-CSRFToken

ssl - 从 IdServer 成功获取 token 但出现证书错误

c - 使用管道在 C 中写入 openssl 的 stdio

mysql - Innodb 崩溃,mysql 直到服务器重新启动后才启动

java - 添加新元素后,JSVGCanvas 不更新图形

php - (ZeroMQ 安装失败) zmq.so : undefined symbol: zend_new_interned_string

.htaccess - 在另一个具有 SSL 的域上进行域重定向

Ruby 企业版 + OpenSSL -> "certificate verify failed"

node.js - Node TLS 套接字 : DEPTH_ZERO_SELF_SIGNED_CERT error