Skip to content

CA 证书

在互联网环境中,数据安全是每个开发者和用户都会关注的核心问题。HTTPS(HyperText Transfer Protocol Secure)是一种基于加密传输的网络协议,是应用层保护通信安全、防止数据被窃听和篡改的主要手段。

在很多一线企业,例如腾讯、阿里、字节等,许多应用强制要求使用 HTTPS 协议进行通信,Kubernetes 也提倡通过 HTTPS 协议进行通信。那么,为什么建议通过 HTTPS 协议而非 HTTP 协议?这源于二者的核心区别:

  • HTTP 协议以明文方式传输数据,在网络中传输时可能遭受窃听、篡改或冒充攻击,安全性较低,存在数据泄露风险;
  • HTTPS 协议基于 HTTP 协议增加了 SSL 安全层,通过加密通道传输数据,安全性更高。

通常,HTTPS 协议主要实现以下两类功能:

  • 数据传输加密: 通过 HTTPS 传输的数据始终以加密形式存在,确保信息安全;
  • 身份认证: HTTPS 支持单向认证和双向认证。单向认证用于验证服务端的真实性,双向认证则同时验证服务端和客户端的合法性。

在实际的企业应用中,HTTPS 的使用方式主要包括:

  • 利用 HTTPS 的数据加密能力,启用单向认证验证服务端的合法性,客户端认证则采用其他方式,例如 Bearer 认证。miniblog 项目采用的正是这种方式;
  • 利用 HTTPS 的数据加密能力,同时通过双向认证验证服务端和客户端的合法性。

由于 CA 认证和 HTTPS 认证流程经常在面试中被考察,同时 miniblog 在启用 HTTPS 服务时需要理解相关内容。接下来,本课程将对这两部分进行详细介绍。

什么是 HTTPS?

HTTPS 是 HTTP(超文本传输协议)的安全版本。它通过在 HTTP 和传输层之间加入 SSL/TLS(安全套接字层/传输层安全协议)来确保通信安全。相比 HTTP,HTTPS 增加了三项核心功能:

  • 数据加密:通过加密技术,确保通信内容不会被第三方窃听;
  • 身份验证:通过服务器证书验证服务器身份,防止中间人攻击;
  • 校验数据是否在传输过程中被篡改。

使用 HTTPS 后,数据从客户端到服务器的整个过程都被加密保护,只有通信双方才能解码数据。

认识 CA 证书

CA 证书的内容较多,可以从以下四个方面掌握 CA 证书相关知识:

  • CA 证书相关名词;
  • CA 证书签发流程;
  • CA 证书认证流程;
  • CA 证书签发实战。

CA 证书相关名词

CA 证书涉及众多名词,以下整理了一些核心名词,供参考:

  • CA: 数字证书认证机构(Certificate Authority,简称 CA),是负责发放和管理数字证书的权威机构,作为受信任的第三方,承担公钥体系中公钥合法性检验的职责;
  • CA 证书: CA 证书是由 CA 签发的数字证书,其格式可能有所不同,目前最常使用的是 X.509 证书格式;
  • 公钥和私钥: 公钥(Public Key)和私钥(Private Key)是一对密钥,通过特定算法生成。公钥是密钥对中公开的部分,通常用于加密会话密钥、验证数字签名或加密需通过相应私钥解密的数据;私钥则是非公开的部分;
  • 加密算法: 可以使用多种加密算法对数据进行加密。常见的加密算法包括以下两类:
  • 对称加密: 只有一个密钥进行加密和解密,密钥相同且加解密速度较快。典型的对称加密算法包括 DES 和 AES 等;
  • 密钥以成对形式出现(公钥和私钥),公钥和私钥互为匹配,且无法通过公钥推导出私钥,反之亦然。公钥用于加密时需通过私钥解密,私钥用于加密时需通过公钥解密。与对称加密相比,其速度较慢。典型非对称加密算法包括 RSA 和 DSA 等。
  • X.509 证书编码格式: X.509 证书可能采用不同的编码规则。目前编码格式主要包括以下两种:
    • PEM(Privacy Enhanced Mail): 文本格式,文件后缀为 .pem,以 -----BEGIN XXXXXX----- 开头,-----END XXXXXX----- 结尾,内容为 BASE64 编码。多用于 Apache 和 UNIX 服务器;
    • DER(Distinguished Encoding Rules): 二进制格式,文件后缀为 .der,不可读。多用于 Java 和 Windows 服务器。
  • X.509 证书文件后缀:X.509 证书的文件后缀不一定是 .pem 或 .der,以下是常见类型:
  • CRT(.crt): 代表 Certificate,意为证书,常见于 UNIX 系统,可能采用 PEM 或 DER 编码,大多数为 PEM 编码;
  • CER(.cer): 代表 Certificate,意为证书,常见于 Windows 系统,可能采用 PEM 或 DER 编码,大多数为 DER 编码;
  • KEY(.key): 通常存放公钥或私钥,虽非 X.509 证书,但其编码格式可能为 PEM 或 DER;
  • CSR(.csr): Certificate Signing Request,即证书签名请求。CSR 不是证书,而是向权威证书颁发机构申请签名证书的请求,其主要包含一个公钥及附加信息。在生成申请时,会同时生成一个私钥,需自行妥善保管,无需提交给 CA 机构。

需要特别注意的是,如果证书文件的后缀是.pem 或.der,在文件名中应体现文件所属类别,例如:server-key.pem 表示私钥文件,server-crt.pem 表示证书文件。

为了更好地理解 CA 相关内容,接下来将以 CA 的签发流程为主线,在介绍流程的同时,阐述相关概念,CA 的认证流程实际上也是 HTTPS 的认证流程。

...