我以为我已经正确设置了 ssl,但是我发现了一个问题。
这部分还可以:ssldomain.com
转至https://ssldomain.com
。
但这不起作用:www.ssldomain.com
将转到http://anotherdomain.com
,而这恰好是机器上的第一个虚拟主机。换句话说,我有一个非 SSL 虚拟主机在该服务器上运行,并且www.ssldomain.com
正在反弹到该虚拟主机。
我用了此实用程序并验证我的 Commodo“PositiveSSL”证书是否涵盖带有和不带有“www”的域名。
我正在使用 Apache 2.2.3-65。
这是我的配置/etc/httpd/conf.d/ssl.conf
...
<VirtualHost *:443>
ServerName www.ssldomain.com
ServerAlias ssldomain.com
DocumentRoot "/opt/deployed_rails_apps/ssl_site/current/public"
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/www.ssldomain.com.crt
SSLCertificateKeyFile /etc/pki/tls/certs/www.ssldomain.com.pem
SSLCACertificateFile /etc/pki/tls/certs/www.ssldomain.com.ca-bundle
SSLHonorCipherOrder On
SSLCipherSuite ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH
SSLProtocol all -SSLv2
Header add Strict-Transport-Security "max-age=15768000"
ErrorLog "logs/ssldomain.com-ssl-error_log"
CustomLog "logs/ssldomain.com-ssl-access_log" common
CustomLog "logs/ssldomain.com-ssl-deflate_log" deflate
<Directory "/opt/deployed_rails_apps/rock_pebble/current/public">
Options -MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</Virtualhost>
# apachectl -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:443 ssldomain.com (/etc/httpd/conf.d/ssl.conf:230)
*:80 is a NameVirtualHost
default server anotherdomain.com (/etc/httpd/conf/httpd.conf:232)
port 80 namevhost anotherdomain.com (/etc/httpd/conf/httpd.conf:232)
Syntax OK
答案1
您无法在 DNS 级别进行重定向,但您可以轻松地在端口 80 上配置另一个虚拟主机来处理重定向。
<VirtualHost *:80>
ServerName www.ssldomain.com
ServerAlias ssldomain.com
# .. logging, anything else you need ..
Redirect permanent / https://ssldomain.com/
</VirtualHost>
答案2
好的,谢谢大家的帮助。我想我已经搞清楚了。我在 httpd.conf 中设置了一个非 SSL 虚拟主机,并在 ssl.conf 中设置了一个 SSL 虚拟主机,如我的问题中所述。
非 SSL 虚拟主机有这个...
ServerName www.ssldomain.com
ServerAlias ssldomain.com
并且 SSL vhost 只有这个……
ServerName www.ssldomain.com
在我的应用程序代码中,我强制所有流量转到相应的https
URL。现在,URL 可以解析带“www”和不带“www”的内容,并且所有内容都通过 SSL 提供。