Skip to content

浅谈CA认证

约 1300 字大约 4 分钟

网络安全

2025-02-24

本文主要总结了笔者对于CA认证的理解。

关于CA认证这篇文章讲的很好,因为原文太长了,这里进行了一些提炼,并辅以一些个人的理解,方便日后查阅。

加密体系

这里不深究内容,仅提出一些术语便于之后理解内容。

RSA: 一直公钥密码体系,RSA的这一对公钥、私钥都可以用来加密和解密,并且一方加密的内容可以由并且只能由对方进行解密,及公钥加密的内容只能用私钥解密,私钥加密的内容只能用公钥解密

签名: 签名是在信息后面再附加的内容,用于证明信息没有被篡改,一般签名由信息做哈希计算得到。用户获得信息后,也对其做同样的哈希计算,再与签名比对,若相同则表明信息没有被篡改。

CA证书的作用和内容

作用

事实上当服务端拥有私钥,用户拥有对应的公钥时,用户就能和服务器比较安全的通信了。但是,问题在于如何让用户得到对应的公钥,也就是用户要如何判断这个公钥就是服务器的呢?

CA证书就是为了解决这样的问题。没有证书时,服务端发送给用户一个公钥,但是用户无法分辨这个公钥到底是真正的服务端发送的,还是黑客伪造发送的;有了证书后,服务端发送给用户一份证书(证书中包含了公钥),用户依靠证书来验明这个服务端的身份。(但是如何判断证书的真伪呢?这是这里比较绕的一点,后面会解释)

CA证书本质上是一个第三方验证的方法(要记住这里总共有三个对象), 证书颁发者用户 担保 证书使用者 的身份。

内容

这里仅选取了有助于理解的重要内容。

证书发布者: 颁布证书的机构。

证书使用者: 使用证书的机构,上文中提到的服务端就是证书的使用者。

公钥: 证书使用者发布的公钥。

签名算法: 证书的签名使用的加密算法。通过证书公钥,根据这个算法对签名解密,从而获取指纹和指纹算法。

指纹及指纹算法: 这里的指纹是由指纹算计(一种哈希算法)计算整个证书得到的哈希值,当用户获得指纹及指纹算法时,可以用指纹算法再次计算证书的哈希值,并与指纹进行比对,从而判断证书是否被篡改。

CA认证过程

来梳理整个CA认证过程便于理解。首先要记住有三个对象,分别为CA(CA机构),Server(服务端)和User(用户)

CA拥有:

  • CA证书私钥

Server拥有:

  • 服务端证书
  • 服务端证书私钥

User拥有:

  • CA证书

认证过程:

  1. 开始通信时Server将服务端证书发送给用户
  2. 用户根据CA证书中的公钥解密服务端证书,判断证书是否被篡改,验明服务端身份
  3. 如果没有问题,用户则使用服务端证书中的公钥与服务端进行通信

涉及的问题(Q&A)

1、为什么用户直接拥有CA证书?

​ CA机构发布的CA证书一般都是系统预装好的,操作系统中一般会预装一些信誉很好并且通过一定的安全认证的证书发布机构的证书,这样用户就拥有了CA证书,以及其中的公钥。证书发布机构一般会使用对应的私钥来加密其发布的证书,这样预装了证书的用户就能够解密证书了。

2、上面提到了如何判断证书的真伪呢?

​ 其实在CA认真过程中就能看出了,服务端证书的真伪就依靠CA证书来检验了,服务端证书由CA发布,Server使用。当CA发布服务端证书时,会使用CA证书私钥来加密服务端证书,而用户拥有CA证书,其中包含公钥,就能够解密该证书,从而验证证书。验明证书后,用户从中提取出公钥,就能与拥有服务端证书私钥的Server安全通信了。

双向认证

上面提到的CA认证为单向认证,仅要求服务端验明身份,双向认证要求用户也需要验明正身。但是仍然具有三个对象。

CA:

  • CA证书私钥

Server:

  • CA证书
  • 服务端证书
  • 服务端证书私钥

User:

  • CA证书
  • 客户端证书
  • 客户端证书私钥

整体的过程与单向过程一致,只是多一步,User也要向Server发送证书以验明身份。