multiple ssl virtual hosts on apache(apache多ssl站点配置)

前言

其实是一个网上随便搜都一大堆的问题了,但是一些教程在 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

NameVirtualHost *: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
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>

问题解决


multiple ssl virtual hosts on apache(apache多ssl站点配置)
https://hunsh.net/archives/73/
发布于
2020年6月26日
许可协议