你有两个选择:
选项 1:服务器名称指示
如果您的客户端浏览器都支持它,您可以将 HTTPD 配置为使用服务器名称指示 (SNI),它允许客户端告诉服务器它正在请求哪个主机。这假设您已经有两个不同的 SSL 证书用于“abc”和“confluence”,并且您在每个 VirtualHost 下配置了适当的 SSL 证书。
值得注意的是,Windows XP 上的 Internet Explorer不支持 SNI,但由于 Windows XP 已经达到生命周期的终点,您的组织希望不再有任何此类客户端。
上面 SNI 页面中的示例供参考,如下所示:
Listen 192.168.1.1:443
LoadModule ssl_module modules/mod_ssl.so
SSLPassPhraseDialog builtin
AcceptMutex flock
SSLSessionCache shmcb:/var/cache/httpd/mod_ssl/ssl_scache(512000)
SSLSessionCacheTimeout 300
SSLMutex default
SSLRandomSeed startup /dev/urandom 256
SSLRandomSeed connect builtin
NameVirtualHost 192.168.1.1:443
<VirtualHost 192.168.1.1:443>
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
SSLCertificateFile /etc/ssl/star.example.com.crt
SSLCertificateKeyFile /etc/ssl/star.example.com.key
ServerName "one.example.com"
DocumentRoot "/var/www/html/one"
CustomLog "/var/log/httpd/one-access.log" combined
ErrorLog "/var/log/httpd/one-error.log"
<Directory /var/www/html>
AllowOverride none
Order Allow,Deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost 192.168.1.1:443>
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
SSLCertificateFile /etc/ssl/star.example.com.crt
SSLCertificateKeyFile /etc/ssl/star.example.com.key
ServerName "two.example.com"
DocumentRoot "/var/www/html/two"
CustomLog "/var/log/httpd/two-access.log" combined
ErrorLog "/var/log/httpd/two-error.log"
<Directory /var/www/html>
AllowOverride none
Order Allow,Deny
Allow from all
</Directory>
</VirtualHost>
选项 2:通配符 SSL 证书
如果您的服务器或客户端不支持 SNI,但如果“abc”和“confluence”是同一域中的主机,您还可以获得通配符 SSL 证书。
例如,如果您获得 *.example.com 的通配符证书,您的单个 httpd 服务器将能够处理 abc.example.com 和 confluence.example.com 的 HTTPS 请求而不会出错。