这里说的证书,不是我们要考的认证,而是现在互联网上几乎随时都在使用的证书。为了满足互联网环境下电子商务等行为的安全性要求,需要有个方法确认身份,不论是提供服务者(网站、应用等)的身份,还是通信中表明用户(邮件、即时消息等)的身份。

        所以,常见用途有:服务器验证(SSL)、邮件签名、软件签名、网络访问保护(NAP)等等

?X.509 标准定义的证书

        常见的证书,基本都基于X.509标准。X.509没怎么听说过,那X.500呢?也没听过?LDAP熟悉吧?LDAP (轻量级目录访问协议,Light Directory Access Protocol)就是X.500 DAP(目录访问协议,Directory Access Protocol) 的一个简化版。

        仔细查看RFC中对X.500,X.509的描述,会发现二者有很多类似的地方。例如,使用特定注册的OID表示一些对象,证书功能等。

?PKI (Public Key Infrastructure) 使用的数字证书

        证书不是单独存在的事物。为了能够达到证书使用的目的,必须要有一个完整的机制,来发挥证书的功能。最简单的,要能够完成证书的生命周期、安全和管理。

        实现以上需求的,是被称为PKI的架构。一般而言,PKI 的组成有以下几个部分:

  • A certificate authority (CA) that both issues and verifies the digital certificates
  • A registration authority which verifies the identity of users requesting information from the CA
  • A central directory—i.e., a secure location in which to store and index keys
  • A certificate management system
  • A certificate policy

        首先,要有个CA来负责证书的发放和验证,然后,需要有个RA来处理和验证用户的证书请求,证书等信息需要有个中央目录进行存储。同时,为了实现安全和统一的管理,需要有证书管理系统和证书策略。

        那么证书到底是什么呢?

        证书的核心其实是一对公钥私钥,公钥私钥使用特定的算法,能够保证成对具有唯一匹配性。私钥通常留给证书持有者,公钥发送或者给其他人使用。

        以常见用法为例,如果是加密传输的内容,例如SSL,HTTPS等,可以参考下图:

        说说证书——什么是证书_第1张图片

        发送者使用接受者提供的公钥加密明文,并在网络上或者以其他形式传输密文。接受者收到密文后,使用与公钥相对应的私钥对密文进行解密,获得发送的明文。由于加密解密使用的公钥私钥不同,也被称之为非对称加密。

        证书使用的另一个常见用法是给邮件、软件等进行签名,以确认其来源或者提供者的身份。可参考下图:

        说说证书——什么是证书_第2张图片

        发送者使用自己的私钥对邮件进行加密,然后发送使用私钥签署的邮件,其中包含邮件、证书中的数字签名和X.509信息。接受者获得签署的信息后,利用VA获得的发送者公钥,确认发送者的私钥唯一,从而确认发送者的身份,并获得邮件明文。