内容简介:前文再续,书接上一回。上一篇文章说了生成根证书应该有许多种: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要分开绑定:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Building Web Reputation Systems
Randy Farmer、Bryce Glass / Yahoo Press / 2010 / GBP 31.99
What do Amazon's product reviews, eBay's feedback score system, Slashdot's Karma System, and Xbox Live's Achievements have in common? They're all examples of successful reputation systems that enable ......一起来看看 《Building Web Reputation Systems》 这本书的介绍吧!