我们有多个子域,每个子域在 httpd.conf 中都有自己的虚拟主机条目,在 ssl.conf 中也有(对于那些支持 https 的)。我们的主要 www 子域具有与之关联的 GoDaddy 证书。我现在在我们的开发服务器上配置的子域(“api.bulbstorm.com”)有一个 ssl.conf 虚拟主机条目,如下所示:
<VirtualHost 172.16.247.153:443>
DocumentRoot "/var/www/api"
ServerName api.bulbstorm.com:443
ErrorLog logs/api-error_log
CustomLog logs/api-access_log common
LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2
SSLCertificateFile /var/www/certs/api/server.crt
SSLCertificateKeyFile /var/www/certs/api/server.key
<Files ~ "\.(cgi|shtml|phtml|php3?)$">
SSLOptions +StdEnvVars
</Files>
<Directory "/var/www/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
<Directory "/var/www/api">
Options +FollowSymLinks
RewriteEngine On
AllowOverride All
Order allow,deny
Allow from all
</Directory>
php_value include_path "/var/www/inc"
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
... /var/www/certs/api/ 中的 crt 和密钥文件是根据此处找到的说明使用 openssl 生成的。
api 子域最初指向 www 子域的 godaddy 证书。但是即使我已经将与 api 子域关联的虚拟主机条目更改为指向自签名证书/密钥对(并重新启动了 httpd,完全清除了与上一个 godaddy 证书异常相关的浏览器设置等)浏览器仍在发出警告说证书适用于 www 域。当我查看证书时,浏览器正在拉取它,看起来他们仍在获得 Godaddy 证书。
在 ssl.conf 文件的较高位置有以下几行:
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
此证书/密钥对不同于 www 子域的虚拟主机条目中引用的 godaddy 证书/密钥对,如下所示:
SSLCertificateFile /etc/www.bulbstorm.com_ssl/www.bulbstorm.com.crt
SSLCertificateKeyFile /etc/www.bulbstorm.com_ssl/www.bulbstorm.com.key
SSLCertificateChainFile /etc/www.bulbstorm.com_ssl/gd_intermediate_bundle.crt
任何人都可以对我遇到的问题提出任何意见,我们将不胜感激。