原文:http://cnzhx.net/blog/self-signed-certificate-as-trusted-root-ca-in-windows/
添加自签发的 SSL 证书为受信任的根证书
通过 SSL 加密的 HTTPS 连接访问网站时,需要安装并配置一个受信任的 CA 根证书(Trusted CA Root Certificate)。平常访问一些加密网站之所以不需要自己安装证书,是因为系统或浏览器已经提前安装了一些受信任机构颁发的证书。但有些时候访问一些组织或个人自己签发证书的网站的时候,就会收到浏览器发出的警告。此时可以将该证书添加到“受信任的根证书颁发机构”存储区,然后就不会再收到安全提示了。
1. 前言¶
为什么要自己签发安全证书(Self-signed CA)呢?因为一些受信任机构颁发的证书年费通常不菲,而且有些时候公司或者组织内部小范围使用的话没有信任问题,这时就可以自己签发一个安全证书。
对于这种安全证书,能否被信任就需要用户自己练就火眼金睛去识别了。比如我签发的证书,我的朋友就多半认为可以被信任,其他人不了解我的话就多半不信任。
在 VPS 上部署了 SSL 服务之后,因为证书(CA)是自己签发的,通过 HTTPS 加密链接访问网站的时候会提示证书不被信任之类的。可以将证书添加到 Windows 证书管理器的“受信任的根证书”目录中,以后 HTTPS 加密访问自己的网站就不会再收到安全提示了。
警告:只有当你确认要安装的安全证书是可以信任的情况下才能安装,否则可能带来严重的安全问题,甚至造成财产损失。下面将介绍如何安装非授权机构发行的安全证书为受信任的根证书。
因为安全证书管理机制不同,下面介绍中涉及到:
- Internet Explorer 9 —— 微软系的都差不多,以下简称 IE。
- Chrome —— Chrome 版本变动频繁,下面以 21.0.1180.60 版本为例,而且因为 Chrome 使用的就是 Windows 系统里的证书,没有独立的证书存储单元,所以搞定 IE 也就搞定 Chrome 了。从 Chrome 中打开证书管理器的方法是,设置(Settings)——> 高级设置(Advanced Settings)——> HTTPS / SSL ——> 管理证书(Manage Certificates …)。
- Firefox —— Firefox 现在版本升级也很快了,好在界面、功能和操作变化不是太大,下面举例用的是 Firefox 15。Firefox 的安全证书管理是独立的,请参考另一篇文章:将自签发的 SSL 证书导入为 Firefox 中的受信任根证书。
2. 从Windows 自带的浏览器 Internet Explorer 中导入¶
使用 IE 通过 HTTPS 打开相应网站,会收到如下图所示的安全警告:
Internet Explorer 9 – 证书错误:访问过程中断。提示说“此网站的安全证书有问题”。此时我们可以点击“继续浏览此网站(不推荐)”来继续。
中文显示的是:
此网站的安全证书有问题。
此网站出具的安全证书不是由受信任的证书颁发机构颁发的。安全证书问题可能显示试图欺骗您或截获您向服务器发送的数据。建议关闭此网页,并且不要继续浏览该网站。
- 单击此处关闭该网页。
- 继续浏览此网站(不推荐)。
详细信息
如果通过单击链接到达此页面,请检查地址栏中的网站以确保该地址是您希望到达的页面。转到如https://example.com
等网站时,请尝试将 “www” 添加到地址中,变为https://www.example.com
。有关详细信息,请参阅 Internet Explorer 帮助中的“证书错误”。
在出现上图所示的证书错误警告时,如果幸运的话,可以在浏览器地址栏的最右边看到红色背景的文字“证书错误”(Certificate Error),如下图所示。
IE 地址栏红色背景的“证书错误”提示,单击“查看证书”后可以直接安装该证书
单击这个错误提示靠下位置的“查看证书(View certificates)”就可以看到该证书的详情,并可以直接安装该证书到 Windows 系统的证书管理器中。如下图所示。
IE 查看证书详情,单击“安装证书”按钮即可开始安装证书
因为是自己签发的安全证书而不是经过认证的机构签发的,所以 Windows 无法自动信任该证书:此 CA 根目录证书不被信任。要启用信任,请将该证书安装到“受信任的根证书颁发机构”存储区。单击“安装证书”按钮即可打开 Windows 证书导入向导,单击“下一步”即可开始安装证书,如下图所示。
证书导入向导
然后系统会询问该证书的存储位置。因为是未经认证的组织或个人自己签发的证书,如果选择让 Windows “根据证书类型,自动选择证书存储”的话,一般会给存储到“中级证书颁发机构”中。以后加密访问该网站的时候还是会收到安全警告。
根据我们的需要 —— 以后打开自己的网站时候不会再发出安全警告,也就是本文的目的,而且又是自己签发的证书,信任不成问题,咱就直接给添加到“受信任的根证书颁发机构”存储中。如下图所示。
Windows 安装安全证书:选择证书存储位置
点选“将所有的证书放入下列存储(P)”,然后单击“浏览(R)”,打开“选择证书存储”窗口来选择。有些时候可能需要选择“显示物理存储区(S)”,然后勾选“受信任的根证书颁发机构”下面的“本地计算机(Local Computer)”来存储。
选择后单击“确定”按钮,然后“下一步”。此时可能会收到安全警告(如下图),提示添加的是“根(root)”证书(信任级别最高)。下图中所示证书就是水景一页自己签发的了。
确认添加根证书
剩下的就是确认几次,任务完成!然后关闭浏览器重新打开,就可以试试效果了。
3. 通过 Windows 证书管理器安装¶
因为 Windows 和 IE 都是微软自家的,管理的是同一个证书管理器。所以不管是从 Windows 系统的证书管理器中导入安装证书,还是直接根据 IE 的提示来安装,效果都是一样的。唯一不同的是,通过 Windows 证书管理器来安装证书的话,需要先将安全证书(.crt 类型的那个文件)保存到本地磁盘。如果不能直接获取该证书,请先看另一篇文章介绍的从 Firefox 证书管理器中导出安全证书一节吧。
在 Windows 7 中(via 微软),要查看或管理证书,必须以管理员身份进行登录,才能执行这些步骤。可以使用“证书管理器”查看有关证书的详细信息,修改、删除这些证书,或者申请新证书。要打开证书管理器:
通过单击“开始”按钮,在“搜索”框中键入 certmgr.msc,然后按 Enter,打开“证书管理器”。 如果系统提示输入管理员密码或进行确认,则需要键入密码或提供确认。
windows 7 证书管理器(certificates manager)
先展开左边栏里的“受信任的根证书颁发机构”,选中其下的“证书”,然后点击菜单栏的“操作”——>“所有任务”——>“导入”,即可打开证书导入向导。然后就可以接着前面的“证书导入向导”那幅图(快速跳转)开始往下操作了。
另外,在查看证书详情那一步,如果打开详细信息标签页,可以看到有个复制到文件的按钮,单击此按钮即可保存该证书为一个 CA 文件。
4. Chrome 中的安全证书错误提示¶
因为 Chrome 使用的就是 Windows 系统里的证书,没有独立的证书存储单元,所以搞定 IE 也就搞定 Chrome 了。从 Chrome 中打开证书管理器的方法是,设置(Settings)——> 高级设置(Advanced Settings)——> HTTPS / SSL ——> 管理证书(Manage Certificates …)。
在 Chrome 中遇到网站证书问题时会收到类似下面的错误提示:
该网站的安全证书不受信任!
您尝试访问的是 cnzhx.net,但服务器出示的证书是由您计算机的操作系统不信任的实体所颁发。这可能表明服务器已自行生成了安全凭据,Google Chrome 浏览器认为其中的身份信息不可靠;也可能表明攻击者正试图拦截您的通信内容。
您不应再继续,尤其是如果您以前从未在此网站看到这一警告信息,则更不应继续操作。
- 仍然继续
- 返回安全连接
- 帮助我了解
连接安全网站时,网站所在的服务器会向您的浏览器出示所谓的“证书”,用于验证其身份。这种证书包含网站地址等身份信息,已经过您计算机信任的第三方验证。通过核实证书中的地址是否与网站地址相符,可以证实自己正与所要访问的网站进行安全通信,而不是正与第三方(如您网络中的攻击者)进行通信。这种情况下,证书未经过您计算机信任的第三方进行验证。任何人都可以创建证书,随意声称自己是任何网站,因此必须要由受信任的第三方对证书进行验证。如果未经上述验证,证书中的身份信息就没有意义。因此,您无法验证与自己通信的对象是真正的 cnzhx.net,还是某个自行生成证书,声称自己是 cnzhx.net 的攻击者。您应该就此停止操作。但是,如果您为之工作的组织机构会自行生成证书,而且您要尝试用此类证书连接本组织机构的内部网站,则您可以安全地解决此问题。您可将本组织机构的根证书作为“根证书”导入,由本组织机构颁发或验证的证书随即会得到信任,下次尝试连接内部网站时就不会出现此错误。请联系贵组织机构的支持人员,让他们协助您向计算机中添加新根证书。
本文发表于水景一页。永久链接:<https://cnzhx.net/blog/self-signed-certificate-as-trusted-root-ca-in-windows/>。转载请保留此信息及相应链接。