前言
其实是一个网上随便搜都一大堆的问题了,但是一些教程在 apache 版本小于 2.4 是无法生效的,这篇文章就是专门为 apache 版本小于 2.4 而写的。
问题表现
配置了多个VirtualHost *:443
,但是只有一个可以生效
配置大概是这样的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| <VirtualHost *:443>
ServerName a.example.com
SSLEngine on
SSLCertificateFile /path/to/hunsh1.crt
SSLCertificateKeyFile /path/to/hunsh1.key
SSLCertificateChainFile /path/to/hunsh1.crt
</VirtualHost>
<VirtualHost *:443>
ServerName b.example.com
SSLEngine on
SSLCertificateFile /path/to/hunsh2.crt
SSLCertificateKeyFile /path/to/hunsh2.key
SSLCertificateChainFile /path/to/hunsh2.crt
</VirtualHost>
|
访问 a.example.com 可以正常,访问 b.example.com 放回 a 的内容并且是 a 的证书,仿佛 b 没有被配置,如果 ab 顺序前后颠倒,现象也会反着来。
问题解决
反复查找最后在 https://stackoverflow.com/questions/26018680/multiple-ssl-virtual-hosts-on-apache 的评论区找到了答案,apache2.4 以下需要添加一行
于是最终的配置长这样
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| NameVirtualHost *:443
<VirtualHost *:443>
ServerName a.example.com
SSLEngine on
SSLCertificateFile /path/to/hunsh1.crt
SSLCertificateKeyFile /path/to/hunsh1.key
SSLCertificateChainFile /path/to/hunsh1.crt
</VirtualHost>
<VirtualHost *:443>
ServerName b.example.com
SSLEngine on
SSLCertificateFile /path/to/hunsh2.crt
SSLCertificateKeyFile /path/to/hunsh2.key
SSLCertificateChainFile /path/to/hunsh2.crt
</VirtualHost>
|
问题解决