前言
其实是一个网上随便搜都一大堆的问题了,但是一些教程在apache版本小于2.4是无法生效的,这篇文章就是专门为apache版本小于2.4而写的。
问题表现
配置了多个VirtualHost *: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>
访问a.example.com可以正常,访问b.example.com放回a的内容并且是a的证书,仿佛b没有被配置,如果ab顺序前后颠倒,现象也会反着来。
问题解决
反复查找最后在 https://stackoverflow.com/questions/26018680/multiple-ssl-virtual-hosts-on-apache 的评论区找到了答案,apache2.4 以下需要添加一行
NameVirtualHost *:443
于是最终的配置长这样
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>
问题解决
本文由 hunsh 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Jun 27, 2020 at 01:16 am