近来,Chrome和Firefox浏览器都将要把Http网页标记为不安全网页,大部分网站估计都不得不升级为Https。如果这在几年前会很困难,因为一张SSL证书很贵,但如今国内两大云服务厂商腾讯云和阿里云,Let's encrypt都提供了免费DV SSL证书。不过我们在使用多域名的时候又面临单域名证书和泛域名证书的选择。

通常情况下,使用Https连接的网站,在打开时会传输证书信息,多张证书就意味着要多传输很多数据,如果对打开页面速度有追求,就会觉得这无法忍受。那用泛域名证书可以解决问题吗?答案是不一定的。我们要分为两种情况,同一主机和不同主机。

不同子域名在同一主机

同一域名同一主机同一证书

同一域名同一主机同一证书

上图为同一子域名www.nomox.cn在同一主机使用同一证书的情况,可以看到只有第一次传输了一次证书(紫色部分为SSL耗时),之后的文件都是直接传输,这是Http2的复用特性,而下图加载了一张不同域名的图片但使用相同证书:

不同域名同一主机同一证书

可以看到加载的test.png为img.nomox.cn,虽然是不同子域名但是在同一主机,还是复用了证书。

不同子域名不同主机

不同子域名同一主机同一证书

与之前不同的是cdn.nomox.cn使用了腾讯云CDN,和www.nomox.cn不在同一主机上,结果再次传输了一张相同的泛域名证书,证书并不能复用。

结论

在同一台服务器上最好用泛域名证书,因为可以复用加快页面传输速度。而如果页面内容在不同服务器上,比如博客本身一台服务器,而图片在另外的CDN服务器上,这时候用多张单域名证书和泛域名证书没有区别,仅仅是部署方不方便而已。