我最近在我的服务器*.key和*csr文件中创build了一个SSL证书。
然后我用Comodo创build了*crt和*.ca-bundle 。
我有2个当前的虚拟主机:
虚拟主机 – http://www.example.com
NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/home/example/public_html/example.com/httpdocs" ServerName example.com ServerAlias www.example.com </VirtualHost>
虚拟主机https://www.example.com
NameVirtualHost *:443 <VirtualHost *:443> SSLEngine on SSLCertificateFile /etc/ssl/certs/example_com.crt SSLCertificateKeyFile /etc/ssl/certs/server.key <Directory /home/example/public_html/example.com/httpdocs> AllowOverride All </Directory> DocumentRoot /home/example/public_html/example.com/httpdocs ServerName example.com </VirtualHost>
问题是,当我去https://www.example.com我得到一个404
我不知道虚拟主机是否正确,或者为什么我得到了404。有没有人见过这个?
我已经启用mod_ssl并重新启动apache
非常感谢
如果没有特殊的技巧,HTTPS不支持NameVirtualHosts; 从configuration中删除NameVirtualhost *:443 。
也就是说,ServerName与证书CN不匹配 – 将其更改为www.example.com。
重新启动Apache。
ssl.conf的默认SSL虚拟主机正在做两件事情:
ServerName或ServerAlias不匹配的所有请求。 简单地删除NameVirtualHost命令将无济于事,因为ssl.conf的虚拟主机将接收到端口443的所有请求。相反,请完全禁用该虚拟主机; 你不需要或不需要它。
而且还会有证书不匹配的问题。 您的证书需要覆盖客户正在使用的主机名。
将ServerAlias www.example.com添加到启用SSL的虚拟主机。