局域网内多台机器使用自签发证书架设https网站的设置方法
https总是与数字证书联系在一起。所谓的https,就是采用了SSL协议的http。SSL协议负责加密通信,采用对称加密。但采用哪种加密方法,密钥如何,并不是固定的,而是在客户端与服务器建立连接之初协商产生的。这个协商步骤,采用了非对称加密。非对称加密,就牵扯到公钥私钥。私钥自己保管,公钥呢?客户端与服务器如何能保证收到的公钥就是对方提供的?这里就要用到数字证书了。数字证书,负责身份验证,公钥就放在数字证书里。
然而新的问题又来了。谁来保证数字证书的真伪?答案是权威机构,由他们签发的数字证书有权威性。但权威机构颁发的证书需要购买,好像还很贵,我们在开发阶段,或者局域网内,采用自签发证书即可。
自签发证书怎么用呢?步骤是这样的:
1、以一台机器作为根证书服务器(其实就是CA),负责生成根证书 2、所有网站的证书,都由这张根证书来签发 3、客户端导入这张根证书到自己的“受信任的根证书颁发机构”里
为什么网站用自签发证书,客户端也要安装证书呢?你看我们访问互联网上的一些著名站点,都是https,但我们啥证书都不用,就能很顺畅的打开。这是因为,大网站都采用了权威机构颁发的证书,浏览器有一个名单,所以我们无须多做些什么。而自签发证书的话,没有权威性,客户端不认,需要手动将根证书安装到自己机器上的“受信任的根证书颁发机构”里。由于网站证书就是由这个根证书签发的,这样客户端才会认可、信任网站证书,访问得以顺利进行。
生成网站证书
https数字证书制作工具itisscg.exe
这是一个用.NET开发的证书生成工具,图形界面。这个工具小巧玲珑,只有200多K,需要.NET4.6的支持。
目前官网不可访问,可到CSDN资源页进行下载:
https://down.365jz.com/24898.html
1)输入subject 和 subject alternative name,存储位置为本机(区别于当前用户)
2)
选择根证书进行签发
3)
我的情况是,网站跟CA不是同一台机,签发的网站证书没必要装在CA这台机器上,因此将证书输出到文件里,同时删掉本机存储的这个证书。估计它的流程是不管3721,都要先生成到本机证书存储区域。
然后将这个证书文件,拷到网站服务器,导入到 “本机”的“个人证书”,然后在IIS里与网站的https绑定即可。方法为:
运行 mmc 命令
添加证书管理单元
鼠标右键,导入网站证书。
然后在IIS里绑定
本来双击这个证书文件,也能安装证书。但安装的路径是“当前账号”而不是“本机”,IIS貌似是访问“本机”,“当前账号”下的证书它看不到。
三、客户端导入根证书
将根证书文件拷贝到客户端机器,在“本机”的“受信任的根证书颁发机构” 里导入即可。
完成以上3个步骤,已经大功告成。但是,开发阶段,一个网站往往需要多张证书:
四、网站多张证书
依我看,开发过程中,一个网站往往有两张以上的证书。为什么这么说呢?我们开发的时候,访问本机的网站,一般都用localhost,而别人访问我们,肯定要用IP。虽然证书里的subject alternative name 支持多个域名和IP,但如果是localhost与IP混在一起的话,谷歌浏览器支持,IE又不干了,它会警告说这张证书是颁布给别的网站的。所以localhost要与IP分开成两张证书。
相应地,https要分开绑定:
如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛