小伙伴们在生成证书时候,通常会拿到一个.key 文件(私钥)和一个cer 文件(或 .crt、.pem)。经常会有同学分不清,面试也往往答不到点上。
🧾 1. .cer 文件(或 .crt、.pem)
-----BEGIN CERTIFICATE-----
(服务器证书内容)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(中间CA证书)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(根CA证书,非必须,很多客户端已有)
-----END CERTIFICATE-----
服务器的 SSL 证书,包含:
• 服务器的公钥
• 有效期
• 证书的签发者信息(CA是谁)
• 最重要的是:签名(由 CA 用私钥签名,确保证书是可信的)
🔑 2. .key 文件(私钥)
这是私钥文件,是整个 HTTPS 加密通信的核心:
• 和 .cer 文件里的公钥是一对的(非对称加密)
• 永远不能泄露给别人
• Nginx/Apache/其他 Web 服务器在 TLS 握手时会用这个私钥来完成加密和身份验证
💡 公钥加密、私钥解密;私钥签名、公钥验证,它们是一对。
🔗 3. 证书链(certificate chain)
有时服务器证书本身还不足以让浏览器信任,就需要附带一整条“链”:
Nginx配置
ssl_certificate /path/to/fullchain.pem; # 包含 .cer 和中间证书
ssl_certificate_key /path/to/yourdomain.key; # 私钥