我知道如果你想在 Apache 中使用多个 SSL 证书,你需要多个 IP 地址。假设我的 VPS 上有 2 个 IP(让我们给它们命名1.1.1.1和2.2.2.2),我想知道以下设置是否可行:
domain1.com 将会1.1.1.1并使用签名的 SSL 证书(来自 Verisign 等提供商)
domain2.com、domain3.com、.. 将位于2.2.2.2并共享自签名证书...
换句话说,一个域名需要自己的签名证书,因为它必须处理金融交易等,所以它在第一个 IP 上是“单独的”。其他域名只需要一个自签名证书,因为它只用于他们的管理区域,我不介意警告,所以它们都会在第二个 IP 上
这样的设置可行吗?如果可以,能提供虚拟主机配置的示例吗?
任何帮助,将不胜感激!
答案1
为不同的 IP 地址获取不同的证书非常简单;只需将 SSL 证书内容放入每个虚拟主机中即可。
目前,在单个 IP 上拥有多个虚拟主机实际上行不通。有些技术将来可能会实现这一点,但用户群体并没有运行可以做到这一点的浏览器。用户代理(浏览器)建立 SSL 连接并验证 SSL 连接,然后告诉服务器它要连接到哪个主机。您确实需要为每个 SSL 虚拟主机分配一个单独的 IP。
<VirtualHost 1.1.1.1:443>
ServerName foo
DocumentRoot /var/www/foo
CustomLog /var/log/httpd/foo.ssl_access_log combined
ErrorLog /var/log/httpd/foo.ssl_error_log
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/pki/tls/certs/foo.crt
SSLCertificateKeyFile /etc/pki/tls/private/foo.key
</VirtualHost>
<VirtualHost 2.2.2.2:443>
ServerName bar
DocumentRoot /var/www/bar
CustomLog /var/log/httpd/bar.ssl_access_log combined
ErrorLog /var/log/httpd/bar.ssl_error_log
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/pki/tls/certs/bar.crt
SSLCertificateKeyFile /etc/pki/tls/private/bar.key
</VirtualHost>