SSL,对于很多人来说,只是听说过而已,实际应用遇到相对比较少。很不幸,在我试图配置 IIS6 + SSL,遇到了一些麻烦,在试过许多网上的方法后,问题却依然存在。在一番费时费力的网络资料搜索后,有点稀里糊涂地解决了,我想我有可能弄明白了,SSL是怎么回事。
我遇到的问题有两个
1. 使用的是自签发证书,浏览器报警。该怎么添加证书信任。
2. 外部网络无法访问 SSL 网页。
概念:
这里首先要弄清楚几个名词:
1. 数字证书
2. SSL 协议
3. CA 证书
4. CA 证书的信任链
1. 数字证书 其实就是加密用的公钥或私钥吧,再包含一些身份等附加信息。任何人都可以使用相关工具生成自己的数字证书,用来加密文件,邮件,或用于通讯加密。
2.SSL 协议,用于网络通讯的加密协议,我是用他来加密网站。他需要一份数字证书,使用里面的公钥及私钥来发送加密的内容,或将收到的加密内容还原。
3. CA 证书,这需要先了解什么是 CA(Certification Authority),它的中文意思是证书授权,是一个单位,来管理发放数字证书的。由它发放的证书就叫 CA 证书,以区别于个人使用工具随意生成的数字证书,查看 CA 证书,里面有两项重要内容,一个是颂发给谁,另一个是由谁颂发的。
4. CA 证书的信任链,如果你安装并信任了一个 CA 机构的证书,以他为根,同样也信任了由这个 CA 机构颂发的其它组织的证书,其它组织则可以创建自己的CA中心,颂发下一级的证书,依次往下,一层层会有许多 CA 中心和数字证书。这个最上层的 CA 证书,即可以称为 根证书。
怎么查看我的电脑里有哪些证书
windows 系统按 Win + R 键打开运行命令窗口,直接输入 certmgr.msc,就可以看到了,这些是微软公司给你预备的 CA 证书,所以你访问那些使用这些 CA 机构颂发证书加密的网站时,浏览器会显示一个锁图标,不会报错,而你访问那些不在此列的 CA 机构颂发的证书的网站,会很刺目的提醒你,网站有风险,有可能遇到骗子网站了。
如何为网站添加证书
要为网站添加证书,你需要一份数字证书,并且这份数字证书的颂发给谁这一项,必须是你的域名,如果你用 IP 直接访问,则应该为你的服务器 IP 地址。否则,浏览器会告诉用户,这份证书是给别人用的,而不是当前网站。
如何添加,具体的操作,网上太多了,我就不具体说了,遗憾的是没有说明内在原理,操作成功还好,否则就像我一样,抓狂了,究竟是怎么回事啊。
这里推荐一个:http://hi.baidu.com/xfx999/item/b741f1de22a8ae15e0f46fd0 说得还是很详细的。
注意:第九步,一定要填写你自己的网站域名,不然在后面你就哭吧,怎么安装 CA 证书 到客户机的信任列表都没用。
这份向导中,先安装了 Windows 组件:证书服务,让你的服务器成了一个 CA 机构,然后自己给自己发证书。(你如果有现成证书,则可以直接导入到 IIS 的,无须安装这项)。
不知道你会不会注意到,在你安装证书服务时,它会自己在你的电脑中生成一个证书,并导入到系统的,这个证书是自己颂发给自己的,有效期就是你安装 Windows 组件时指定的年数。
而你用 IIS 生成请求,通过后,则又生成了另一个证书,这个证书是由上一个证书颂发的,有效期默认是一年,这个我不知道在哪里可以改,所以意味着,每年你要到 IIS 里,再去向证书服务申请 renew 一下。
如何在客户端安装证书
如果没有安装证书,打开浏览器会提示错误,要选择忽略并继续才能浏览 SSL 页面。
安装方法,网上也是一搜一大把,就不说了,自己找吧。
这里我遇到的问题是,如果我安装的是 IIS 申请到的证书,错误提示还是存在的,反复安装还是一样,刚开始以为没安装成功,实际上已经能在 certmgr.msc 中找到了。最后的解决方法是直接安装 CA 服务自己产生的证书,问题解决了。可能是因为前者是由根证书发的,安装到 ”受信任的根证书颁发机构“ 中无效吧,事实如何,我也不知道了。
文中开头所说的第二个问题,在一番折腾后,竟然不见了,又是稀里糊涂了,没办法。你可以看一下微软官方的这个页面 http://support.microsoft.com/kb/915039/zh-cn 不知道对你有没有帮助。
OK,看了这些,不知道你的问题解决了没?
参考资料:
http://hi.baidu.com/xfx999/item/b741f1de22a8ae15e0f46fd0 (【转】在windows2003的IIS6上建立https SSL加密的方法)
http://support.microsoft.com/kb/915039/zh-cn (您尝试导入证书之后,连接到 IIS 6 的 Web 站点时出现错误消息:"无法显示该页"找不到服务器或发生 DNS 错误")
http://program-think.blogspot.com/2010/02/introduce-digital-certificate-and-ca.html (数字证书及CA的扫盲介绍) 这个页面对于国内网友来说,正常情况下是打不开的,原因你知道的,但这对于理解 CA 证书非常有帮助。