什么是CA?
CA是Certificate Authority的缩写,也叫“证书授权中心”。它是负责 管理和签发证书的第三方机构,就好比故事里面的中介——C 公司。一般来说,CA 必须是所有行业和所有公众都信任的、认可的。因此它必须具有足够的权威性。就好比A、B两公司都必须信任C公司,才会找 C 公司作为公章的中介。
什么是CA证书?
CA 证书,顾名思义,就是CA颁发的证书。(人人都可以找工具制作证书。但是你一个小破孩制作出来的证书是没啥用处的。因为你不是权威的 CA 机关,你自己搞的证书不具有权威性)
这就好比上述的故事里,某个坏人自己刻了一个公章,盖到介绍信上。但是别人一看,不是受信任的中介公司的公章,就不予理睬。坏蛋的阴谋就不能得逞啦。
什么是证书之间的信任关系?
在故事里谈到,引入中介后,业务员要同时带两个介绍信。第一个介绍信包含了两个公章,并注明,公章C信任公章A。证书间的信任关系,就和这个类似。就是用一个证书来证明另一个证书是真实可信的。
证书有什么用啊?
1.验证网站是否可信 (针对HTTPS)
通常,我们如果访问某些敏感的网页(比如用户登录的页面),其协议都会使用 HTTPS 而不是 HTTP。因为 HTTP 协议是明文的,一旦有坏人在偷窥你的网络通讯,就可以看到网络通讯的内容(比如你的密码、银行帐号、等);而 HTTPS 是加密的协议,可以保证你的传输过程中,坏蛋无法偷窥。
但是,千万不要以为,HTTPS 协议有了加密,就可高枕无忧了。再举一个例子来说明。假设有一个坏人,搞了一个假的网银的站点,然后诱骗你上这个站点。假设你又比较单纯,一不留神,就把你的帐号,口令都输入进去了。那这个坏蛋的阴谋就得逞了。
为了防止坏人这么干,HTTPS 协议除了有加密的机制,还有一套证书的机制。通过证书来确保,某个站点确实就是某个站点。
有了证书之后,当你的浏览器在访问某个 HTTPS 网站时,会验证该站点上的 CA 证书(类似于验证介绍信的公章)。如果浏览器发现该证书没有问题(证书被某个根证书信任、证书上绑定的域名和该网站的域名一致、证书没有过期),那么页面就直接打开;否则的话,浏览器会给出一个警告,告诉你该网站的证书存在某某问题,是否继续访问该站点?为了形象起见,下面给出 IE 和 Firefox 的抓图:
大多数知名的网站,如果用了 HTTPS 协议,其证书都是可信的(也就不会出现上述警告)。所以,今后你如果上某个知名网站,发现浏览器跳出上述警告,你就要小心啦!
2.验证某文件是否可信(是否被篡改)
具体是通过证书来制作文件的数字签名。制作数字签名的过程太专业,就不说了。后面专门告诉大家如何验证文件的数字签名。考虑到大多数人用 Windows 系统,就拿 Windows 的例子来说。
比如,我手头有一个 Firefox 的安装文件(带有数字签名)。当俺查看该文件的属性,会看到如下的界面。上面有个“数字签名”的标签页。如果没有出现这个标签页,就说明该文件没有附带数字签名。
(什么是数字签名?)
明文按照hash算法构成一个简要的摘要,这个摘要用私钥进行加密就形成了我对这个明文的数字签名,因为私钥只有我有,如果这个文件传给别人,别人可以用我的公钥对其进行解密,能修改解密后的文件,但别人不能进行加密,因为没有我的私钥,因此即使你修改了解密后的文件,我再把我加密的后的密文解密就知道你纂改了我的数据,同理这个方法可以用来验证发送方是我本人,因为只有我的公钥才能解我的私钥,说明该文件是由我发出的,并由我加密
选择该标签页,看到如下界面。
(顺便说一下,某些数字签名中没有包含“邮件地址”,那么这一项会显示“不可用”;同样的,某些数字签名没有包含“时间戳”,也会显示“不可用”。不要紧张,这里显示的“不可用”跟数字签名的有效性没关系。)
一般来说,签名列表中,有且仅有一个签名。选中它,点“详细信息”按钮。跳出如下界面:
通常这个界面会显示一行字:“该数字签名正常”(图中红圈标出)。如果有这行字,就说明该文件从出厂到你手里,中途没有被篡改过(是原装滴、是纯洁滴)。
如果该文件被篡改过了(比如,感染了病毒、被注入木马),那么对话框会出现一个警告提示“该数字签名无效”(图中红圈标出)。界面如下:
偷偷说一下:CNNIC(中国互联网信息中心) 的 CA 证书 名声特臭,可以google翻墙看看。现在很多国外的机构已经将其吊销,不再将其加入根证书列表中了。比如你用google浏览器访问网易(网易的证书是找CNNIC签发的),因为CNNIC不在google信任的证书范围内,所以你会发现google浏览器会报一网易的站点证书不安全的问题