数字证书
1、简介:
数字证书(certs)又称因特网上的“ID卡”,它包含了由某个受信任组织担保的用户或公司的相关信息。
2、背景知识:
1)数字签名
除了加/解密报文之外,还可以用加密系统对报文进行数字签名,这对因特网安全证书系统来说非常重要。
数字签名是附加在报文上的加密校验和。使用数字签名有两个好处:可以证明是作者编写了这条报文;可以防止报文被篡改。
数字签名的使用过程:A将变长报文提取为定长的摘要——A对摘要应用“签名”函数,该函数以私钥为参数——计算出签名后,A将其附加在报文末尾,再发送给B——B对签名应用使用了公开密钥的反函数,得到摘要,再与报文计算出来的摘要比较。若两者不匹配,要么就是报文在传输过程中被篡改了,要么就是发送端没有A的私有密钥(它不是A)。
3、证书的主要内容
数字证书中还包含一组信息,所有这些信息都是由一个官方的证书颁发机构(CA,负责证明用户、计算机和组织的身份)以数字方式签发的,比如对象名称(服务器、组织等)、过期时间、证书发布者、来自证书发布者的数字签名。另外,数字证书通常还包括对象的公开密钥,以及对象和所用签名算法的描述性信息。
任何人都可以创建数字证书,但并不是所有人都能够获得受人尊敬的签发权,从而为证书信息担保,并用其私有密钥签发证书。典型的证书结构如下:
4、X.509 v3证书
数字证书没有单一的全球标准。不过现在使用的大多数证书都以一种标准格式——X.509 v3来存储它们的信息。X.509 v3证书将证书信息规范至一些可解析字段中。不同类型的证书有不同的字段值,但大部分都遵循X.509 v3结构。
X.509证书字段有:版本(X.509证书版本号,目前通常为3)、序列号(CA为每个证书生成的唯一整数)、签名算法ID(签名所用加密算法,如“用RSA加密的MD2摘要”)、证书颁发者(发布并签署该证书的组织名,X.500格式)、有效期(起始日期+结束日期)、对象名称(证书中描述的实体,如一个组织,X.500格式)、证书对象的公开密钥信息(公开密钥及其所用算法,以及所有附加参数)、发布者唯一ID(可选)、证书对象唯一ID(可选)、可选的扩展字段集(版本3及以上;扩展字段有关键或非关键的。关键扩展非常重要,证书使用者一定要能够理解。常用扩展字段有:基本约束、对象与证书颁发机构的关系、证书策略、授予证书的策略、密钥的使用、对公开密钥使用的限制)、证书的颁发机构签名(CA用指定签名算法对上述所有字段进行的数字签名)。
基于X.509证书的签名有好几种,如Web服务器证书、客户端电子邮件证书、软件代码签名证书和证书颁发机构证书。
5、用证书对服务器进行认证
通过HTTPS建立安全Web事务后,浏览器都会自动获取所连接服务器的数字证书。如果服务器没有证书,安全连接就会失败。
浏览器收到证书时会对签名颁发机构进行检查。若该机构是权威的公共签名机构,浏览器可能已经知道其公开密钥(浏览器会预装很多签名颁发机构的证书),这样就可以验证签名了。下图说明了如何通过其数字签名来验证证书的完整性:
如果对签名颁发机构一无所知,浏览器就无法确定是否应该信任它,这时通常会向用户显示一个对话框,看看他是否相信这个签名发布者(可能是本地的IT部门或软件厂商)。
参考资料:
《HTTP权威指南》
不断学习中。。。