首页>最新数字证书问答>同一服务器IP下多站点多域名HTTPS实现

同一服务器IP下多站点多域名HTTPS实现

假设有这样一个场景,我们有多个站点(例如site1.marei.com,site2.marei.com和site3.marei.com)绑定到同一个IP:PORT,并区分不同的主机头。我们为每一个SSL站点申请并安装了SSL数字证书。在浏览网站时,用户仍看到证书不匹配的错误。那么如何实现同一服务器IP下多站点多域名的https呢?

1. IIS中实现

• 问题原因

当一个https的请求到达IIS服务器时,https请求为加密状态,需要拿到相应的服务器证书解密请求。由于每个站点对应的证书不同,服务器需要通过请求中不同的主机头来判断需要用哪个证书解密,然而主机头作为请求的一部分也被加密。最终IIS只好使用第一个绑定到该IP:PORT的站点证书解密请求,从而有可能造成对于其他站点的请求失败而报错。

• 解决方案

SNI开启方式请参考https://docs.microsoft.com/en-us/iis/get-started/whats-new-in-iis-8/iis-80-server-name-indication-sni-ssl-scalability

2. Nginx中实现

打开 Nginx 安装目录下 conf 目录中打开 nginx.conf 文件,找到

1.	server {
2.	    listen 443;
3.	    server_name domain1;
4.	    ssl on;
5.	    ssl_certificate 磁盘目录/订单号1.pem;
6.	    ssl_certificate_key 磁盘目录/订单号1.key;
7.	    ssl_session_timeout 5m;
8.	    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
9.	    ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
10.	    ssl_prefer_server_ciphers   on;
11.	    location / {
12.	        root   html;
13.	        index  index.html index.htm;
14.	    }
15.	}
		

在上述基础上,再添加另一段配置

1.	server {
2.	    listen 443;
3.	    server_name dommain2;
4.	    ssl on;
5.	    ssl_certificate 磁盘目录/订单号2.pem;
6.	    ssl_certificate_key 磁盘目录/订单号2.key;
7.	    ssl_session_timeout 5m;
8.	    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
9.	    ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
10.	    ssl_prefer_server_ciphers on;
11.	    location / {
12.	        root html;
13.	        index index.html index.htm;
14.	    }
15.	}
		

通过上述配置在Nginx中支持多个证书。

3. Apache配置HTTPS虚拟主机共享443端口

1.	Listen 443
2.	NameVirtualHost *:443
3.	< VirtualHost *:443 >
4.	  ……
5.	ServerName www.example1.com
6.	SSLCertificateFile     common.crt;
7.	SSLCertificateKeyFile  common.key;
8.	SSLCertificateChainFile  ca.crt
9.	  ……
10.	< /VirtualHost >
11.	< VirtualHost *:443 >
12.	  ……
13.	ServerName www.example2.com
14.	SSLCertificateFile     common2.crt;
15.	SSLCertificateKeyFile  common2.key;
16.	SSLCertificateChainFile  ca2.crt
17.	
18.	  ……
19.	< /VirtualHost >
		

相关资讯推荐:

同一个IP可以安装配置多个SSL证书吗

如何在同一IP地址上运行多个SSL证书? 服务器名称指示SNI,可以帮助您实现同一IP运行多个SSL证书,这样虚拟主机网站也能用上SSL证书了。