我以为我已经正确设置了SSL,但是我发现了一个问题。
这部分是确定的: ssldomain.com去https://ssldomain.com 。
但是,这不起作用: www.ssldomain.com将要http://anotherdomain.com ,这恰好是机器上的第一个虚拟主机。 换句话说,我在该服务器上运行了一个非SSL虚拟主机,而www.ssldomain.com正在反弹。
我用这个实用程序,并validation我的Commodo“PositiveSSL”证书覆盖有和没有“www”的域。
我正在使用Apache 2.2.3-65。
这是我在/etc/httpd/conf.d/ssl.conf的configuration…
<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
您不能在DNS级别redirect,但可以轻松地在端口80上configuration另一个虚拟主机来处理redirect。
<VirtualHost *:80> ServerName www.ssldomain.com ServerAlias ssldomain.com # .. logging, anything else you need .. Redirect permanent / https://ssldomain.com/ </VirtualHost>
好的,谢谢大家的帮助。 我想我有这个想法。 我在httpd.conf中设置了一个非SSL虚拟主机,在我的问题中描述了SSL虚拟主机。
非SSL虚拟主机有这个…
ServerName www.ssldomain.com ServerAlias ssldomain.com
而SSL虚拟主机只有这个…
ServerName www.ssldomain.com
在我的应用程序代码中,我强制所有stream量转到相应的https URL。 现在,URL可以parsing和不使用“www”,所有内容都通过SSL提供。