CA 也拥有一个证书(内含公钥私钥)。网上的公众用户通过验证 CA 的签字从而信任 CA ,任何人都可以得到 CA 的证书(含公钥),用以验证它所签发的证书。

如果用户想得到一份属于自己的证书,他应先向 CA 提出申请。在 CA 判明申请者的身份后,便为他分配一个公钥,并且 CA 将该公钥与申请者的身份信息绑在一起,并为之签字后,便形成证书发给申请者。如果一个用户想鉴别另一个证书的真伪,他就用 CA 的公钥对那个证书上的签字进行验证,一旦验证通过,该证书就被认为是有效的。证书实际是由证书签证机关(CA)签发的对用户的公钥的认证。证书的内容包括:电子签证机关的信息、公钥用户信息、公钥、权威机构的签字和有效期等等。目前,证书的格式和验证方法普遍遵循X.509 国际标准。

    网络编程中我们最常见的就是信息的传输,处理信息的通信方式外,我们还需要考虑的就是所需要传递信息的安全性。那么在网络传输中什么能保证传递信息的安全性呢?作为一个程序员首先想到的就是加密解密。既然说道了加密,解密。那么我们不得不学习一下ca证书。

证书的作用:

保密性 - 只有收件人才能阅读信息。

认证性 - 确认信息发送者的身份。

完整性 - 信息在传递过程中不会被篡改。

不可抵赖性 - 发送者不能否认已发送的信息。

保证请求者与服务者的数据交换的安全性。

对于java网络编程,通过jdk的帮助文档我们可以知道,CertificateCertificateFactoryPublicKeyX509Certificate等等接口以及抽象类为我们提供了很多抽象方法。我们只需要通过API重写抽象方法就够了。

具体实现请参照javax.security.cert.*;