数字证书

概念

数字证书(TLS证书)是一个遵循 X.509 国际标准的电子文件。它最核心的作用是将“某个实体(如网站域名)”和“一个公钥”进行强制绑定。

它解决了什么问题

ssl证书(TLS证书)是网站与用户之间的信任凭证:

  1. 验证身份,证明是访问的确实是这家公司。
  2. 加密传输,防止数据被窃听
  3. 数据完整性,TLS 协议后续的加密通信能确保数据在传输过程中没有被中途修改

浏览器地址栏的那把锁和https,背后就是它。

由谁签发

由权威的CA(证书颁发机构)签发。
CA机构有Digicert、GlobalSign、Sectigo,国内的有CFCA、GDCA、上海CA、BJCA、天威诚信

证书的“信任链”(父子关系)

一张部署在你服务器上的证书,往往不是孤立的,而是三条“链条”:

  • 服务器证书(叶子证书):你具体部署的那张,也就是你向 CA 申请下来的。
  • 中间证书(Intermediate CA):为了安全,根 CA 不直接签服务器证书,而是由根 CA 签几个“中间 CA”,再由中间 CA 签你的证书。你需要把中间证书和服务器证书拼接在一起部署(否则浏览器报链不完整)。
  • 根证书(Root CA):自签名证书,预置在操作系统/浏览器中。它是整个信任链的“源头”(你之前问的 Let’s Encrypt、DigiCert 的根就在浏览器里)。

服务器上常见的证书文件格式

后缀 本质格式 说明
.key 任意格式 私钥文件(不是证书),绝对不能公开,权限建议设为 600。
.crt / .cer X.509 证书 既可以存 PEM(文本),也可以存 DER(二进制)。Linux 常见 PEM。
.pem PEM 编码 文本格式(Base64)。以 —–BEGIN CERTIFICATE—– 开头。Nginx 通常用这种。
.der DER 编码 二进制格式。Windows 和 Java 常用。
.p12 / .pfx PKCS#12 格式 包含证书 + 私钥的一个加密压缩包,常用于 Windows IIS 或导入浏览器,有密码保护。

运维必知:Nginx 要求你提供 证书文件(.crt/.pem) 和 私钥文件(.key) 分开的路径。而 .p12 是你把两者打包在一起发给客户用的(比如苹果推送证书)。

证书分类

DV(Domain Validation)

只验证域名控制权,适合个人/博客

OV(Organization Validation)

额外验证企业真实存在,需提交营业执照,适合企业官网/一般业务

EV(Extended Validation)

最严格的人工尽调,适合银行/支付/电商

CSR(Certificate Signing Request)证书签名请求

你可以把它理解成一张“证书申请表”
当你需要向 CA(证书颁发机构)申请一张数字证书时,你不能直接把“公司名和域名”用邮件发过去,而必须在你的服务器上生成一个 CSR 文件,然后将这个文件提交给 CA。CA 会根据 CSR 里的信息生成最终的证书。

CSR包含什么

CSR 本质上是一段经过编码的文本(通常是 PEM 格式,以 —–BEGIN CERTIFICATE REQUEST—– 开头),它主要包含三部分核心信息:

  1. 申请人的公钥
    你在生成 CSR 的同时,会在服务器本地生成一对密钥(公钥和私钥)。CSR 里只包含公钥,私钥必须绝对保密地留在你自己的服务器上。
  2. 申请人的身份信息(专有名称,DN)
    CN(Common Name,通用名称)
    O(Organization,组织/公司名)
    OU(Organizational Unit,部门名称):如“IT 部”(可选)
    L(Locality,城市)、ST(State/Province,省份)、C(Country,国家代码)
  3. 申请人的数字签名
    CSR 最后会使用你的私钥对上述所有信息进行签名。CA 收到 CSR 后,会用 CSR 里的公钥去验签,以证明“这个 CSR 确实是由拥有该私钥的申请人生成的”,防止网络传输中被篡改

CSR生成的简要流程

  1. 在你的服务器(Linux 用 OpenSSL,Windows 用 IIS 或 certreq 工具,或直接在云厂商控制台)生成一对密钥。
  2. 输入你的域名、公司名、地理位置等信息,工具会自动拼接成 CSR。
  3. 将生成的 CSR 复制出来,粘贴到 CA 机构的申请页面上。
  4. CA 验证你的域名所有权和公司信息后,使用 CA 的私钥对 CSR 里的公钥和信息进行签名,生成最终的数字证书(.crt 或 .pem)发还给你。
  5. 你将 CA 发给你的证书部署到服务器上,并与你本地保留的私钥配对使用。

SSL/TLS

概念

SSL:Secure Sockets Layer(安全套接层)
TLS:Transport Layer Security(传输层安全协议)。SSL 普及后,互联网工程任务组(IETF)接手了标准化工作,并将其更名为 TLS。TLS 是 SSL 的正式继承者。

版本演变

SSL 2.0 和 3.0:存在严重安全漏洞(如 POODLE 攻击),早在 2015 年前后就被各大浏览器和 RFC 标准正式废弃。
TLS 1.0 和 1.1:也已在 2020 年左右被主流浏览器和支付行业标准(PCI-DSS)弃用。
目前主流:TLS 1.2(自 2008 年发布,至今仍广泛使用)。
最新标准:TLS 1.3(2018 年发布,速度更快、握手次数更少、加密算法更先进,大幅缩减了漏洞攻击面)。

既然 SSL 已死,为什么我们还常叫“SSL 证书”

这是一个历史遗留的“语言习惯”。专业上的正确叫法:应该称为 “TLS 证书” 或 “数字证书”。

TLS位于网络协议的哪一层

标准TCP/IP (4层) 教学常用(5层) OSI 七层模型(7层) 包含的代表内容
应用层 应用层 应用层(7) HTTP DNS FTP
- - 表示层(6) TLS/SSL 加密(理论位置)、数据压缩
- - 会话层(5) 建立连接会话(NFS)
传输层 传输层 传输层(4) TCP(可靠)、UDP(快速)
网络层 网络层 网络层(3) IP 地址路由、Ping(ICMP)
网络接入层 数据链路层 数据链路层(2) MAC 地址、以太网、Wi-Fi
- 物理层 物理层(1) 网线、光纤、电压、网口