现在不管是微信小程序还是一些其他方面的接口,都强制要求实现https的链接,特别是微信小程序还要求是1.2以上的ssl,基本上就把win2003的服务器逼上绝路了。
网上也有一些用端口号的,野狼觉得都有些强人所难,效果并不好。那么野狼觉得效果比较好的方案有两个:
(1)使用apache服务器
这个只是一个思路,野狼没有尝试过,应该是行得通的。不管你是linux系统还是win系统也都能安装apache。但如果你对win系统比较熟悉,不懂linux或者对于iis熟悉不太懂apache等,可能就麻烦一些。
(2)用win2012版本的服务器
win2003、win2008野狼已经验证过,没有办法实现一个服务器多个ssl证书。但是win2012 r2就不一样了,可以跟绑定普通http域名一样,写域名头,这样就实现了一个服务器上可以用多个证书的。
附1:服务器多站点多域名https实现
更新时间:2017-07-31 14:21:01
假设有这样一个场景,我们有多个站点(例如site1.marei.com,site2.marei.com和site3.marei.com)绑定到同一个ip:port,并区分不同的主机头。我们为每一个ssl站点申请并安装了证书。在浏览网站时,用户仍看到证书不匹配的错误。
1. iis中实现
问题原因
当一个https的请求到达iis服务器时,https请求为加密状态,需要拿到相应的服务器证书解密请求。由于每个站点对应的证书不同,服务器需要通过请求中不同的主机头来判断需要用哪个证书解密,然而主机头作为请求的一部分也被加密。最终iis只好使用第一个绑定到该ip:port的站点证书解密请求,从而有可能造成对于其他站点的请求失败而报错。
解决方案
第一种解决方案将每个https站点绑定到不同的端口。但是这样的话客户端浏览网页时必须手动指定端口,例如 https://site.domain.com:444
第二种解决方案是为每个站点分配一个独立的ip,这样冲突就解决了,甚至主机头也不用添加了。
第三种解决方案是使用通配证书。我们采用通配证书颁发给.domain.com,对于我们的示例中,应该采用颁发给.marei.com的证书,这样任何访问该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
……
附2:iis6上实现多域名证书
检查windows2003是否已经升级到sp1以上版本,如果没有升级sp1,则后续步骤将无法完成确保使用的证书是多域名,或者是通配符证书,两个网站必须都使用这个证书,如果这个证书的cn和san不包含着2个网站的域名,就会报警告首先按正常的流程,为站点1,安装ssl证书,并将ssl端口配置为443。对站点2,选择分配证书,并选择站点1使用的证书,并将ssl端口配置为其他端口号(444,445,446...)
iis sni 4请用本机管理员登入系统,启动命令行程序“cmd”。运行以下指令:
cscript.exe c:inetpubadminscriptsadsutil.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:windowssystem32inetsrvconfigapplicationhost.config
找到
<binding protocol="https" bindinginformation="*:443" />
<binding protocol="https" bindinginformation="*:444" />
<binding protocol="https" bindinginformation="*:445" />
修改成:
<binding protocol="https" bindinginformation="*:443:www.domain.com" />
<binding protocol="https" bindinginformation="*:443:www.domain.com" />
<binding protocol="https" bindinginformation="*:443:www.domain.com" />
切记需要对应的每个站点都修改。
3、然后在iis的站点上重新选择下证书,重启iis站点。
旅游网站从用户体验出发考虑网站建设与网站推广到底存在什么瓜葛?网站模板建站有哪5个地方要重点注意的?用自媒体怎么去优化网站?如何快速提升百度SEO排名(重点知识介绍、原则、方法、问题)网站内容界面设计的一些技巧网站建设可以回答用户这些问题吗网站建设应如何搭配色彩