文章目录从零理解 HTTPS 证书CA 证书到底是怎么创建的一、HTTPS 的核心问题二、证书其实任何人都可以生成三、CA证书颁发机构四、申请 HTTPS 证书需要提供什么1 网站域名2 公钥3 组织信息某些证书五、CA 如何生成证书六、浏览器如何验证证书1 检查域名2 检查签名3 检查是否可信七、为什么还会有 Root CA 和中级 CA八、如果有人伪造证书会怎样九、总结从零理解 HTTPS 证书CA 证书到底是怎么创建的很多人刚接触 HTTPS 时都会产生一个疑问数字证书不是任何人都能生成吗那浏览器为什么会相信某些证书这篇文章会从证书的实际创建流程讲清楚这个问题。一、HTTPS 的核心问题在互联网上访问网站时浏览器需要确认两件事1️⃣ 这个网站是不是我想访问的那个网站2️⃣ 我们之间的通信不会被别人偷看HTTPS 使用TLS协议解决这两个问题。其中最关键的就是数字证书TLS Certificate。二、证书其实任何人都可以生成首先要明确一点生成证书本身非常容易。例如用OpenSSL一条命令就能生成openssl req-x509-newkeyrsa:2048-keyoutkey.pem-outcert.pem这会生成私钥private key证书certificate问题是任何人都可以生成证书 那浏览器为什么会相信某些证书答案是因为证书需要“可信机构签名”。三、CA证书颁发机构在 HTTPS 体系里有一种机构叫CACertificate Authority例如Let’s EncryptDigiCertGlobalSign它们的作用类似互联网的“公证处”。流程是网站 → 申请证书 CA → 验证网站身份 CA → 签发证书浏览器只信任这些 CA 签发的证书。四、申请 HTTPS 证书需要提供什么申请证书时通常需要提供1 网站域名例如example.com www.example.comCA 需要确认你真的拥有这个域名。验证方法通常是DNS 记录验证在网站服务器放一个验证文件邮件验证2 公钥网站需要先生成一对密钥公钥public key 私钥private key私钥只保存在服务器 绝不能泄露公钥提交给 CA 写入证书3 组织信息某些证书一些证书还需要提供公司名称地址注册信息这种证书叫EV证书扩展验证证书。五、CA 如何生成证书当 CA 验证完成后会生成一个证书文件。证书里包含域名 公钥 证书有效期 签发机构 签名其中最关键的是CA 的数字签名。签名本质上是CA 用自己的私钥 对证书内容进行加密签名六、浏览器如何验证证书当你访问https://example.com浏览器会收到服务器发送的证书。然后做三件事1 检查域名证书里的域名是否匹配example.com2 检查签名浏览器会用 CA 的公钥验证签名。如果签名正确说明证书确实是 CA 签发的3 检查是否可信浏览器和操作系统里内置了一些根证书。例如Google ChromeMozilla FirefoxMicrosoft Edge它们都保存了一份可信 CA 列表。只要证书的签发机构在这个列表里浏览器就会信任这个网站七、为什么还会有 Root CA 和中级 CA现实中 CA 不会直接用最重要的密钥签证书。因此会形成一个结构Root CA根证书 ↓ Intermediate CA中级证书 ↓ 网站证书原因是保护根证书的安全。Root CA 的私钥通常离线保存极少使用日常签证书的是中级 CA。整个体系叫Public Key Infrastructure八、如果有人伪造证书会怎样如果攻击者自己生成一个证书example.com 签发者自己浏览器会发现签发机构不在可信列表于是出现警告Your connection is not private这就是 HTTPS 防止假网站的机制。九、总结HTTPS 的信任体系其实很简单网站生成密钥 ↓ 向 CA 申请证书 ↓ CA 验证域名并签名 ↓ 浏览器验证 CA 签名所以浏览器信任的不是证书本身而是签发证书的 CA。