TLS证书签发流程

签发类型 根据签发机构类型,TLS证书签发可以划分为两种: 公信CA(Certificate Authority)签发的证书(如DigiCert、Let’s Encrypt、Sectigo等) 企业内部私有CA签发的证书。 公信CA签发与企业内部私有CA签发,两者的区别是公信力不同。一般情况下,互联网环境不应信任企业内部私有CA签发的证书。 下面主要详细说明最常见的 公信CA签发域名验证(DV)、组织验证(OV)、扩展验证(EV)证书的过程,以及全网最流行的免费证书Let’s Encrypt为例的自动化流程。 公信CA签发证书的通用流程(DV/OV/EV) 生成CSR(Certificate Signing Request,证书签名请求) 在你的服务器上首先生成一对密钥:私钥(private key)和公钥(public key)。 使用私钥生成CSR文件,CSR里包含了: 域名(Common Name 或 SAN 列表) 组织信息(OV/EV证书需要) 公钥 国家、省份、城市、公司名称等(OV/EV需要) 常用命令(OpenSSL): openssl req -new -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr 选择CA并提交申请 登录CA官网(或通过ACME协议自动化),选择证书类型(DV/OV/EV)、有效期。 上传CSR(或者有些CA让你直接在网页填写信息后帮你生成)。 域名控制权验证(DCV,Domain Control Validation) 这是所有公信证书都必须完成的步骤,证明你确实控制这个域名。常见三种方式: HTTP验证(最常见):CA给你一段随机token,你需要在域名下 .well-known/acme-challenge/ 路径放一个特定文件 示例: http://yourdomain.com/.well-known/acme-challenge/xxxxxx DNS验证:CA给你一段TXT记录,你需要在域名DNS管理面板添加 _acme-challenge.yourdomain.com TXT “xxxxxx” Email验证(较少用):给域名whois邮箱或管理员邮箱(如admin@、webmaster@)发邮件,点链接确认 DV证书只做这一步;OV/EV还要额外验证组织合法性。 (OV/EV专属)组织信息验证 核实公司工商注册信息(通过第三方数据库如Dun & Bradstreet) 核实营业执照、法人身份 电话回访确认申请人身份和授权 验证域名管理权归属公司(whois + 额外证明文件) CA签发证书 CA用自己的中间证书或根证书的私钥,对你的公钥+域名+有效期等信息进行签名,生成证书文件(.crt 或 .pem) 同时会下发CA链证书(中间证书 bundle,参考下面附录) 下载并安装证书 你把证书、公钥、私钥安装到Web服务器(Nginx/Apache/IIS等) 重启服务,以使证书生效 最常见的自动化签发:Let’s Encrypt(ACME协议) Let’s Encrypt是目前全球使用量最大的免费CA,90天有效期,完全自动化。 ...

December 10, 2025 · 2 min · holdsky

TLS 1.3前向安全的通俗解释

前向安全 前向安全(Forward Secrecy,简称 PFS)是 TLS(以及其他加密协议)中一个非常重要的安全属性,简单来说: “即使攻击者将来拿到了服务器的长期私钥(即证书私钥),也无法解密之前已经完成的所有 TLS 会话” 这就是前向安全的核心意义:过去的通信记录永远是安全的,即使私钥彻底泄露。 前向安全在TLS 1.3中强制开启的,安全性由 椭圆曲线离散对数问题(ECDLP) 保障 ECDH(椭圆曲线 Diffie-Hellman)最核心的数学原理 一句话就能说清楚: “乘法可以随便做,除法几乎做不出来” 我们用最常用、最直观的曲线 X25519 / Curve25519 来解释(TLS 1.3 里 90% 以上用的就是它)。 1. 公共参数(全世界都一样) 选定一个安全的椭圆曲线:y² = x³ + 486662x² + x(模 2²⁵⁵-19) 选定一个基点(base point)G,一个固定的点,坐标是已知的: G = (9, 447…)(具体数字不重要,只要大家用同一个就行) 2. 双方各自生成临时私钥(就是随机数) 爱丽丝(Alice,客户端)随机选一个 256 bit 的整数作为私钥: a = 随机数(比如 3f1a…c2,绝对保密!) 鲍勃(Bob,服务器)也随机选一个 256 bit 的整数: b = 随机数(比如 7d2b…e9,绝对保密!) 3. 计算并公开“公钥”(其实就是把私钥乘以基点 G) 爱丽丝算出自己的临时公钥: A = a × G 鲍勃算出自己的临时公钥: B = b × G ...

November 26, 2025 · 2 min · holdsky