博客
关于我
同一台云服务器部署的网站如何绑定多个SSL证书?
阅读量:133 次
发布时间:2019-02-26

本文共 3350 字,大约阅读时间需要 11 分钟。

随着现阶段流量入口已经从PC端转移到移动端,其中微信小程序是一个流量极大的入口。但其要求必须是1.2以上的SSL,所以把Windows2003这种老古董直接排除在外。

当然有人通过端口号进行区分,不过新睿云小编觉得自己用随意,要是放出去基本没戏。大家都用443或80端口,你搞特殊化网站不符合用户操作习惯。所以这里给出的解决方案,都是新睿云小编这里亲手试了的。

1、使用win2012版本的服务器

Windows2003与Windows2008这两个系统新睿云小编这里试了一下,确实没有办法实现一个服务器多个ssl证书,不过确实有不一样的,比如Windows2012 r2这个系统就不同,可以跟绑定http域名一样绑定证书,可能微软也自己意识到这个问题。

 

服务器多站点多域名HTTPS实现

假设有这样一个场景,我们有多个站点(例如site1.xinruiyun.cn,site2.xinruiyun.cn和site3.xinruiyun.cn)绑定到同一个IP:PORT,并区分不同的主机头。我们为每一个SSL站点申请并安装了证书。在浏览网站时,用户仍看到证书不匹配的错误。

1. IIS中实现

问题原因

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

解决方案

第一种解决方案将每个https站点绑定到不同的端口。但是这样的话客户端浏览网页时必须手动指定端口,例如 https://site.xinruiyun.cn:444

第二种解决方案是为每个站点分配一个独立的ip,这样冲突就解决了,甚至主机头也不用添加了。

第三种解决方案是使用通配证书。我们采用通配证书颁发给.xinruiyun.cn,对于我们的示例中,应该采用颁发给.xinruiyun.cn的证书,这样任何访问该domain的请求均可以通过该证书解密,证书匹配错误也就不复存在了。

第四种解决方案是升级为IIS8,IIS8中添加的对于SNI(Server Name Indication)的支持,服务器可以通请求中提取出相应的主机头从而找到相应的证书。

SNI开启方式请参考http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-server-name-indication-sni-ssl-scalability

2. Nginx中实现

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

server {

listen 443;

server_name domain1;

ssl on;

ssl_certificate 磁盘目录/订单号1.pem;

ssl_certificate_key 磁盘目录/订单号1.key;

ssl_session_timeout 5m;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;

ssl_prefer_server_ciphers on;

location / {

root html;

index index.html index.htm;

}

}

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

server {

listen 443;

server_name dommain2;

ssl on;

ssl_certificate 磁盘目录/订单号2.pem;

ssl_certificate_key 磁盘目录/订单号2.key;

ssl_session_timeout 5m;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;

ssl_prefer_server_ciphers on;

location / {

root html;

index index.html index.htm;

}

}

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

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

Listen 443

NameVirtualHost *:443

……

ServerName www.example1.com

SSLCertificateFile common.crt;

SSLCertificateKeyFile common.key;

SSLCertificateChainFile ca.crt

……

……

ServerName www.example2.com

SSLCertificateFile common2.crt;

SSLCertificateKeyFile common2.key;

SSLCertificateChainFile ca2.crt

……

IIS6上实现多域名证书

检查WINDOWS2003是否已经升级到SP1以上版本,如果没有升级SP1,则后续步骤将无法完成确保使用的证书是多域名,或者是通配符证书,两个网站必须都使用这个证书,如果这个证书的CN和SAN不包含着2个网站的域名,就会报警告首先按正常的流程,为站点1,安装SSL证书,并将SSL端口配置为443。对站点2,选择分配证书,并选择站点1使用的证书,并将SSL端口配置为其他端口号(444,445,446...)

IIS SNI 4请用本机管理员登入系统,启动命令行程序“cmd”。运行以下指令:

cscript.exe c:/inetpub/adminscripts/adsutil.vbs set /w3svc/站点标识符/SecureBindings ":443:主机头"

回到IIS6控制台,刷新,可以发现网站2的SSL端口已经改成443了。

IIS服务器多域名SSL证书绑定443端口解决方案

默认情况一个服务器的IIS只能绑定一个HTTPS也就是443端口

要实现多个站点对应HTTPS只能更改IIS配置

1、默认情况一个服务器的IIS只能绑定一个HTTPS也就是443端口

要实现多个站点对应HTTPS只能更改IIS配置

首先把每个站点分配个不同端口,如443.444.445…(一定要是多域证书)

2、然后在:C:/Windows/system32/inetsrv/config/applicationHost.config

找到

<binding protocol="https" bindingInformation="*:443" />

<binding protocol="https" bindingInformation="*:444" />

<binding protocol="https" bindingInformation="*:445" />

修改成:

<binding protocol="https" bindingInformation="*:443:www.xinruiyun.cn" />

<binding protocol="https" bindingInformation="*:443:www.xinruiyun.cn" />

<binding protocol="https" bindingInformation="*:443:www.xinruiyun.cn" />

切记需要对应的每个站点都修改。

然后在iis的站点上重新选择下证书,重启iis站点。

至此就实现我们当初的目的,同一个服务器下绑定多个SSL证书,当然可能会有更好的办法,如果您有更好的办法可以给我们留言反馈。谢谢每一位支持的小伙伴!

转载地址:http://jdby.baihongyu.com/

你可能感兴趣的文章
NIFI大数据进阶_NIFI集群知识点_认识NIFI集群以及集群的组成部分---大数据之Nifi工作笔记0014
查看>>
NIFI大数据进阶_NIFI集群知识点_集群的断开_重连_退役_卸载_总结---大数据之Nifi工作笔记0018
查看>>
NIFI大数据进阶_内嵌ZK模式集群1_搭建过程说明---大数据之Nifi工作笔记0015
查看>>
NIFI大数据进阶_外部ZK模式集群1_实际操作搭建NIFI外部ZK模式集群---大数据之Nifi工作笔记0017
查看>>
NIFI大数据进阶_实时同步MySql的数据到Hive中去_可增量同步_实时监控MySql数据库变化_操作方法说明_01---大数据之Nifi工作笔记0033
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_01_实际操作---大数据之Nifi工作笔记0029
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_说明操作步骤---大数据之Nifi工作笔记0028
查看>>
NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
查看>>
NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
查看>>
NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
查看>>
NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南002---大数据之Nifi工作笔记0069
查看>>
NIFI集群_内存溢出_CPU占用100%修复_GC overhead limit exceeded_NIFI: out of memory error ---大数据之Nifi工作笔记0017
查看>>
NIFI集群_队列Queue中数据无法清空_清除队列数据报错_无法删除queue_解决_集群中机器交替重启删除---大数据之Nifi工作笔记0061
查看>>
NIH发布包含10600张CT图像数据库 为AI算法测试铺路
查看>>
Nim教程【十二】
查看>>
Nim游戏
查看>>
NIO ByteBuffer实现原理
查看>>
Nio ByteBuffer组件读写指针切换原理与常用方法
查看>>
NIO Selector实现原理
查看>>