Windows2008+iis7环境下如何部署多站点(SSL)https;
[重要通告]如您遇疑难杂症,本站支持知识付费业务,扫右边二维码加博主微信,可节省您宝贵时间哦!
看了这个标题,亲搜索过来会是咋样,干脆直接的说,如果搜索到了这篇文章,我就劝你放弃这个想法,想要使用Windows2008+iis7环境部署多站点ssl,那是不可能的事情,因为IIS7压根特么的就不支持,我最近研究了好几天才写的这篇文章,实属一个个的都不靠谱,如果想多站点部署SSL,建议使用windows 2012以上(含)系统,均可支持,具体看站内文章 windows server 2012 + IIS8.5部署多个SSL证书绑定https
对于win2003和win2008 iis6或者iis7服务器,由于微软系统限制一个IP只能配置一个证书,所以才有以上的说辞,那真的没有办法了么?办法还是有的,花钱嘛;往下看
1.如IIS7真有有多个不同的站点想使用证书(SSL、https),可以为这些站的所有域名购买一个多域名证书(多个域名在一个证书里)即可解决此问题; 如果这些不同站的顶级域名是一样的,是多个不同的子域名,可以购买一个通配符证书即可解决此问题;
2.如果要购买多个不同的证书,也可以为服务器添加ip,为每个证书分配一个不同ip,这样也可以解决解决win2003和win2008一个ip下只能安装一个证书的问题;
以上就是Windows2008系统+II7部署多站点证书的方式方法?刺激不?看到上面,干脆就放弃得了,不管多麻烦,我感觉一劳永逸还是可以的,比如换系统;那真的没有其他的办法了?有。。。还是钱嘛~~~用下面这个链接里的工具就可以解决此问题(购买是需要花点小钱滴)
完整可用网站管理助手(iistool)4.2无限制版带SSL证书 (可部署支持windows2008+iis7.0 https、SSL多站点部署功能)
那到底有没有免费的教程呢?有~~必须动手能力要强哦,我还真看了感觉可以的,用nginx反向代理方式部署多站点证书,这是没办法中的办法,这其实也是一个坑的东西;nginx有反向代理的功能,说白啦就是说让有请求过来的时候它可以根据当前请求的信息来转发到不同的服务进行处理,
实现方法
让nginx来接管80和443端口的请求,同时别忘了把iis的443和80端口换成其它的端口。比如555和8080,(如果占用啦这些端口的话)
服务器80端口的处理
当nginx80端口接到请求的时候根据当前请求的域名信息来转发到对应的iis请求就可以啦。比如iis的站点 www.aaa.com:8080 因为端口我们已经改为8080啦要记得带上,下面是nginx的配置
server { listen 80; server_name www.aaa.com; location / { proxy_pass http://www.aaa.com:8080; index index.html index.php index.htm; } }
有其它的网站的话类似添加就可以,
服务器443(https)端口的处理
443处理的情况分两种,
一种是nginx的https转发到iis的https
这种方法还得配置iis的https证书,有点麻烦,不推荐使用,但是这里也给记录下,
iis中添加https站点时是不能用443端口的因为443分配给啦nginx所以添加站点的时候443换成其它的比如444 555等,多个https站点就添加多个每个端口写的不一样就ok
这个时候iis中访问的时候是 https://www.bbb.com:555 让用户用这样的地址访问肯定是不行的,使用nginx给转发一下
server { listen 443 ssl; server_name www.bbb.com; resolver 114.114.114.114 223.5.5.5 valid=3600s; #ssl on; ssl_certificate cert/1_www.bbb.com.crt; ssl_certificate_key cert/2_www.bbb.com.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; #charset koi8-r; #access_log logs/$host.access.log main; location / { proxy_pass https://www.bbb.com:555; index index.html index.htm; } }
另一种是nginx的https请求转发到iis的http请求
很明显,这种方法是最简单的啦,iis上面就不用配置https啦,就正常的处理就行如下;
server { listen 443 ssl; server_name www.bbb.com; resolver 114.114.114.114 223.5.5.5 valid=3600s; #ssl on; ssl_certificate cert/1_www.bbb.com.crt; ssl_certificate_key cert/2_www.bbb.com.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; #charset koi8-r; #access_log logs/$host.access.log main; location / { proxy_pass http://www.bbb.com:8080; index index.html index.htm; } }
到此功能就全实现啦,另外注意点 8080和555 666 等端口不用设置为外网访问,外网访问还是只有80 和443就可以啦,其实这么操作,也不咋样,还是各种问题吧;还是不够直接,不像Windows 2012那样操作方便;
windows2008+iis7 部署https证书多站点的解决办法(此方法测试无啥用,不过也写出来给想尝试的人)
第一步:iis里正常绑定要设置证书的网站
第二步:打开文件 C:\Windows\system32\inetsrv\config\applicationHost.config (注:修改之前可以备份一下这个文件)
第三步:修改文件(把https那一行的端口 改成443后面要跟上对应的网址)
第四步:重启服务器
问题未解决?付费解决问题加Q或微信 2589053300 (即Q号又微信号)右上方扫一扫可加博主微信
所写所说,是心之所感,思之所悟,行之所得;文当无敷衍,落笔求简洁。 以所舍,求所获;有所依,方所成!