数字证书和咱们平时见到的纸质证书同样,由一些通用的元素构成:html
1. 证书的名称git
2. 颁发证书的机构网络
3. 证书发给谁加密
4. 证书生效时间(有些证书还有失效时间)htm
5. 签名blog
判断一个证书是否可信:hash
1. 首先看发证机构是否值得信赖(好比微软颁发的数字证书和一个不知名的机构颁发的证书,你更信赖谁?)it
2. 看是否处在有效期im
3. 看数字签名,数字签名必须是真的,不然一切都是假的。数字签名是验明证书真伪的惟一凭证。db
签名过程,以微软为例:
1. 微软持有私钥,另外有配套的公钥。私钥能够理解为钥匙,公钥为锁。私钥是保密的,微软本身保存,公钥对全网络公开。
2. 微软对证书上的内容进行hash运算,得出摘要(digest),摘要是固定长度的一串字符
3. 摘要用私钥进行加密,就获得了签名
4. 将签名附在证书内容下面
解密过程:
1. 拿到证书对签名使用公钥解密,获得证书摘要
2. 对比解密出来的摘要和签名时的摘要是同样的,证实证书是微软签发的,且内容没被篡改,由于任何对内容的篡改(哪怕只改一个bit位)解密出来的摘要都会和加密时大不相同
不幸的是,万一有人替换了你手中的公钥,再使用配对的私钥签名给你发消息,就能够欺骗你了。为了防范这种状况,就有了"证书中心"(certificate authority,简称CA),CA使用本身的私钥再次对证书进行签名来保证咱们能够拿到真正的公钥。
read more: 数字签名是什么 http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html