内容简介:前文再续,书接上一回。上一篇文章说了生成根证书应该有许多种:1、如果操作系统是server,可以
前文再续,书接上一回。上一篇文章说了 局域网内多台机器使用自签发证书架设https网站的原理 ,现在接着介绍实现方法和步骤:
1、以一台机器作为根证书服务器(其实就是CA了),负责生成根证书 2、所有网站的证书,都由这张根证书来签发 3、访问所有网站的客户端,都导入这张根证书到自己的“受信任的根证书颁发机构”里
一、生成根证书
生成根证书应该有许多种:
1、如果操作系统是server,可以 搭建CA服务器
参考文章:《搭建CA服务器》
我搭建了,但因为刚开始的时候思路没有整理清晰,乱试一气,没有试成功。但现在想起来,应该也可以的
2、用makecert.exe这是微软为WIN7或以前的操作准备的证书生成工具,挺好用的。现在WIN10和win2016 server之后用的是一个叫:New-SelfSignedCertificate 的工具,在power shell里面运行的命令。名字真长,看上去就头大。各种参数也很长,完全不像一个命令行工具。微软的好多东西,真是越做越烂。我因为没有WIN10和win2016 server,所以就没试。其实win201 server也有这个工具,但参数极少,完全没办法用。
makecert.exe 生成根证书的方法是:
makecert -r -pe -n "CN=WebSSLTestRoot" -b 08/01/2018 -e 08/01/2054 -ss root -sr localmachine -len 2048
这样就生成了一个名为“WebSSLTestRoot”的根证书,这个根证书有效期为2018-08-01到2054-08-01(注意日期一定要双位,不足则补零,否则语法报错),并且安装到本机“受信任的根证书颁发机构”里去。(详见拙作《https的证书》)
但是,makecert也许是版本太旧了,它生成的证书没有 使用者备用名称(subject Alternative Name)这个属性。
缺乏这个属性,IE没有问题,但新版本的谷歌浏览器(Chrome 58 及以上版本)是根据这个属性来判断身份的,没有的话就会说“服务器无法证明它就是 * ”,因而标为不安全,报NET::ERR_CERT_COMMON_NAME_INVALID 的错。
对根证书来说,没有这个属性,我没测试过是否有影响,但网站证书的话,谷歌真的不行。所以,makecert已经不能再用了,至少不能用于生成网站证书。详见参考资料:
错误:“主题备用名称缺失”或 NET::ERR_CERT_COMMON_NAME_INVALID 或“您的连接不是私密连接”
现在要隆重介绍第三种工具
这是一个用.NET开发的证书生成工具,图形界面。这个 工具 小巧玲珑,只有200多K,需要.NET4.6的支持。
生成根证书步骤:
1)输入根证书的名称Subject,存储位置为本机(区别于当前用户)
Subject Alternative Name不用填(由此可知,用makecert.exe来生成根证书应该也是可以的)
2)
3)
这样设置,按下生成按钮后,这个根证书,会在本机的个人证书里生成,然后自动拷贝到 “受信任的根证书颁发机构” 里。
本来根证书在“受信任的根证书颁发机构” 里有一份就足够了,不过本机的个人证书里这份也不要删掉。因为用来签发网站证书的时候要用到。
另外,生成证书的时候,系统会弹出这个证书给我们预览,预览界面下面有个【安装证书】按钮,不用理会,不必再点击。
二、生成网站证书有了根证书,就可以用于签发网站证书了。签发的网站证书导入网站服务器,然后客户端导入根证书,则客户端的浏览器就能够信任网站了。就是这么简单。
如上所述,生成网站证书不能用makecert.exe,要用itisscg.exe:
1)输入subject 和 subject alternative name,存储位置为本机(区别于当前用户)
2)
选择根证书进行签发
3)
我的情况是,网站跟CA不是同一台机,因此签发的网站证书没必要装在CA这台机器上,因此要将证书输出到文件里,同时删掉本机存储的这个证书。估计它的流程是不管3721,都要先生成到本机证书存储区域。
然后将这个证书文件,拷到网站服务器,导入到 “本机”的“个人证书”,然后在IIS里与网站的https绑定即可。方法为:
运行 mmc 命令
添加证书管理单元
鼠标右键,导入网站证书。
三、客户端导入根证书将根证书文件拷贝到客户端机器,在“本机”的“受信任的根证书颁发机构” 里导入即可。
依我看,开发过程中,一个网站往往有两张以上的证书。为什么这么说呢?我们开发的时候,访问本机的网站,一般都用localhost,而别人访问我们,肯定要用IP。虽然证书里的subject alternative name 支持多个域名和IP,但如果是localhost与IP混在一起的话,谷歌浏览器支持,IE又不干了,它会警告说这张证书是颁布给别的网站的。所以localhost要与IP分开成两张证书。
相应地,https要分开绑定:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
HTML 压缩/解压工具
在线压缩/解压 HTML 代码
XML、JSON 在线转换
在线XML、JSON转换工具