400-080-0149

如何解决同一IP和端口中绑定多站点显示SSL证书不匹配

SSL证书配置在服务器上,不同服务器配置的方法也不尽相同,如果操作不当,可能会导致SSL证书无法正常使用。比如在服务器的同一IP地址和端口中绑定多站点但显示证书不匹配,出现这种问题该如何解决?

当一个HTTPS请求到达Web服务器时,该HTTPS请求为加密状态,需要相应的服务器证书解密该HTTPS请求。由于每个站点对应的证书不同,因此服务器需要通过请求中的主机头来选择用来解密的证书。但是主机头作为请求的一部分信息,也被作为加密对象,因此Web服务器选择第一个绑定到指定IP地址和端口的站点,使用该站点证书进行解密,导致Web服务器对其他站点请求解密失败从而发生报错。

以下提供三种Web服务器的解决方案:

1、IIS服务器

绑定到多端口

将每个HTTPS站点绑定到同一IP地址的不同端口。例如,将HTTPS站点绑定到[$Domain]:[$Port],但是从客户端浏览网页时必须在地址栏中手动指定端口。

绑定到多IP地址

将每个HTTPS站点绑定到不同IP地址。此时,不存在请求冲突的情况,同时请求中也可以不添加主机头信息,但是该方法的经济成本较高。

通配证书

各站点采用通配符证书,此时任何访问各站点的请求都可以通过该证书解密。

升级IIS

将IIS版本升级到IIS8,IIS8中支持SNI(Server Name Indication)功能,服务器可以从请求中提取出相应的主机头从而获取相应的证书。

2、Nginx服务器

在Nginx服务器中,可通过增加一个虚拟主机的方式,完成多站点绑定到服务器同一个IP地址和同一个端口,请参考以下操作方法:

登录Nginx服务器,执行以下命令,打开Nginx配置文件

vim [$Nginx_Dir]/conf/nginx.conf

参考以下配置,编辑配置文件

server {

listen 443;

server_name [$Domain1];

ssl on;

ssl_certificate [$Certificate_Path1];

ssl_certificate_key [$Key_Path1];

ssl_session_timeout 5m;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_ciphers [$Ciphers_Suite1];

ssl_prefer_server_ciphers on;

location / {

root html;

index index.html index.htm;

}

}server {

listen 443;

server_name [$Domain2];

ssl on;

ssl_certificate [$Certificate_Path2];

ssl_certificate_key [$Key_Path2];

ssl_session_timeout 5m;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_ciphers [$Ciphers_Suite2];

ssl_prefer_server_ciphers on;

location / {

root html;

index index.html index.htm;

}

}

3、Apache服务器

登录Apache服务器,执行以下命令,打开ssl.conf配置文件

vim [$Apache_Dir]/conf.d/ssl.conf

参考以下配置,编辑配置文件

Listen 443

NameVirtualHost *:443

<VirtualHost *:443>

……

ServerName [$Domain1]

SSLCertificateFile [$Certificate_Path1];

SSLCertificateKeyFile [$Key_Path1];

SSLCertificateChainFile [$Certificate_Chain1];

……

</VirtualHost>

<VirtualHost *:443>

……

ServerName [$Domain1]

SSLCertificateFile [$Certificate_Path2];

SSLCertificateKeyFile [$Key_Path2];

SSLCertificateChainFile [$Certificate_Chain2];

相关文章

LAYOUT

SAMPLE COLOR

Please read our documentation file to know how to change colors as you want

BACKGROUND COLOR

BACKGROUND TEXTURE