我遇到以下问题,尝试设置SSL证书。 当打开根域名example.com浏览器显示绿色标志,一切正常。 然而试图打开www版本www.example.com我看到以下消息
www.example.com使用无效的安全证书。
该证书仅对example.com有效
(错误代码:ssl_error_bad_cert_domain)
从这个消息中,我猜测SSL只是针对example.com发布的(请纠正我是否错误),现在除了购买另一个证书(包括两个版本)之外,还有另外一种避免这种警告的方法,甚至在向浏览器显示证书之前将所有stream量redirect到example.com ? 所以,当用户键入https://www.example.com ,它将redirect到https://example.com ,证书已经有效。
我有这个在我的网站文件
<VirtualHost *:80> ServerName example.com ServerAlias www.example.com Redirect / https://example.com/ </VirtualHost> <VirtualHost *:443> ServerName example.com ServerAlias www.example.com DocumentRoot /home/username/www/example SSLEngine on SSLCertificateFile /etc/apache2/ssl/example.com.crt SSLCertificateKeyFile /etc/apache2/ssl/example.com.private.key SSLCertificateChainFile /etc/apache2/ssl/example.com.intermediate.crt </VirtualHost>
我试图把redirect的条件,但没有帮助。
RewriteCond %{HTTP_HOST} ^www.example.com RewriteRule ^/(.*)$ https://example.com/$1 [L,R=301]
Apache 2.2.22,Debian 7.9
谢谢
不。TLS协议(及其过时的前身SSL)根据URL的主机部分validation证书,在这种情况下是完整的域名,在传输任何数据之前。 这是devise,并满足几个安全要求。
您应该获得为您的域名颁发的证书(不称为“SSL”); 用于执行此操作的function称为subjectAlternativeName或SAN。 有时您也可以获得包含*.example.com和example.com的通配符证书。
首先,大多数证书应该已经与www一起。 我没有听说过一个只发布在根域的文件。 TLS实际上检查整个URL,而不仅仅是根域,所以如果在WWW域中使用没有WWW的根证书,将是无效的。 通配符和EV证书也存在,但是那些更昂贵。
至于SSL证书,你有没有考虑过使用Let's Encrypt而不是直接购买证书? 让我们encryption允许您为任意数量的子域(最多100个)免费颁发多个证书。