一、 X509协议简介
SSL 采用的是 X.509协议,由上而下金字塔式的凭证制度(图2)。在 X.509 中,每一个合格的凭证上,都会有一个签名。最下层的凭证上,会有一个认证中心 (CA)的签名,表示这个认证中心 (CA) 检查过,确认所有者数据无误。中间的认证中心(CA) 上,也会有管辖它的最高层认证中心 (Root CA)的签名,表示最高层认证中心授权给它,可以签发别人的凭证。只有最高层认证中心上,因为它已经是最大,没有再上层可以给它签名了,所以只好自己签自己,凭证上的签名是自己签的。X.509标准用于在大型计算机网络提供目录服务,X.509提供了一种用于认证X.509服务的PKI结构,两者都属于ISO和ITU提出的X系列国际标准,目前,有许多公司发展了基于X.509的产品,例如Visa、MasterCard 、Netscape,而且基于该标准的Internet和Intranet产品越来越多。X.509是目前唯一的已经实施的PKI系统。X.509 V3是目前的最新版本,在原有版本的基础上扩充了许多功能,目前电子商务的安全电子交易(SET)协议也采用基于X.509 V3。
![]() |
| 图2 基于X.509协议的认证结构图 |
相关名词解释:
- 什么是数字签名
数字签名是用 Private Key针对某一段数据用 Digest Hash 算法(如 SHA1 )做出来的一Digest 摘要码。只要原来的数据有所不同,演算出来的 Digest 摘要码就会跟着变动。日后收到这个 Public Key 的人,只要检查上面认证中心的签名,就可以工具这个代码和它上面所载的所有人数据相不相符。也就知道连接的服务器,是不是真正的Web服务器。
- private key(私钥)
公钥算法中使用的加密密钥对的安全密钥部分。私钥通常用于解密对称会话密钥、对数据进行数字签名或解密已使用相应公钥加密的数据。
- public key(公钥)
公钥算法中使用的加密密钥对的非安全部分。公钥通常用于加密会话密钥、验证数字签名或加密可使用相应私钥解密的数据。
- 什么是凭证?
凭证的原文是 Certificate ,是附上所有人 (owner) 的数据(公司名称、服务器名称、个人真实姓名、电子邮件E-mail 、通讯地址等数据),后面加上数字签名的 Public Key 。凭证上会附有几个数字签名,代表这些签名的人,确认过这个 Public Key 的所有人,和凭证上所载的数据相符,没有假造。在 X.509 中,最下层每一个合格的凭证 (Certificate) 上,会有一个认证中心 (CA) 的签名,表示这个认证中心 (CA) 检查过,确认凭证上的所有者数据无误。当程序碰到没见过的凭证时,只要检查凭证上认证中心 (CA) 的签名无误,即代表这个认证中心 (CA) 查核过这个凭证 (Certificate) ,凭证上的资料无误。
- 什么是认证中心?
认证中心的原文是 CA ,是 Certificate Authority 的缩写。认证中心是 X.509 的一环。认证中心也是一种凭证,上面附有认证中心本身的资料,但不是用来加解密,而是用来签发凭证,证明凭证所有人和凭证上所载的数据无误。每一个合格的认证中心 (CA)上,会有一个管辖它的最高层认证中心 (Root CA) 的签名,表示最高层认证中心授权给它,可以签发别人的凭证。当程序碰到没见过的凭证,凭证上签名的认证中心 (CA) 也没见过时,只要检查认证中心上附的最高层认证中心(Root CA) 的签名无误,即代表这个最高层认证中心 (Root CA) ,认为这个认证中心 (CA) 的凭证签发过程很仔细,检查数据很详实,所以授权给它,准许它可以签发凭证 (Certificate) 。所以这个认证中心 (CA) 签发的凭证 (Certificate) ,凭证上的资料也没有问题。
- 什么是最高层认证中心?
最高层认证中心的原文是 Root CA ,也称为优异CA。最高层认证中心是 X.509 的一环。最高层认证中心也是认证中心 (CA) ,和一般认证中心的差别在于,它不会直接用来签发凭证,而是授权给一些中间的认证中心,让这些中间的认证中心来签发凭证。最高层认证中心,因为已经拥有最高权限,没有再上层可以给它签名了,所以凭证上的是自己的签名,不是别人的签名。这样就产生一个问题:最高一级的证书机构没有授予者,那么谁为它的证书作担保呢?仅在这种情况下,此证书是"自签名的",即证书的授予者和主题中的一样,所以,必须对自签名的证书备加注意。优异机构广泛发布的公共密钥可以减小信任这个密钥所带来的风险--这显然比其他某个人发布密钥并宣称他是证书机构要安全一些。浏览器被默认地配置为信任著名的证书机构。
许多公司是专业证书机构,如Thawte(http://www.thawte.com/ )和VeriSign(http://www.verisign.com/) 提供如下服务:
- 验证证书的申请
- 处理证书的申请
- 授予和管理证书
自己建立一个证书机构也是可能的,虽然在Internet环境中有风险,但在验证个体或服务器较容易的Intranet环境中,会很有用。如果程序被加进一些不可靠的最高层认证中心,接下来碰到它签下来的凭证,都会有问题,整个程序的安全都会被破坏。所以在 X.509 下,SSL 程序一定要好好保护最高层认证中心,一定要再三确认,不可以随便让人手动加进最高层认证中心。
