无需登录 数据私有 本地保存

本地 SSL 自签名证书生成演示 - 理解证书链

33
0
0
0
✅ 已复制到剪贴板

SSL 自签名证书链生成器

理解证书链层级结构:Root CA → Intermediate CA → Server Certificate

证书参数配置
🔒 Root CA
📜 Intermediate CA
🌐 Server Cert
正在加载加密库,请稍候...
常见问题与知识点
深入了解SSL证书链的相关概念

SSL证书链(Certificate Chain)是由多个证书组成的信任链条,从服务器证书开始,经过中间CA证书,最终到达受信任的根CA证书。浏览器通过逐级验证每个证书的签名来建立信任——如果链条中所有签名都有效且根证书在浏览器的信任存储中,则认为服务器证书可信。这种分层结构提高了安全性:根证书可以离线保存,中间证书分担签发负载,即使中间证书私钥泄露也能快速吊销而不影响根证书。

根证书 (Root CA):位于信任链顶端,自签名(Issuer = Subject),由操作系统/浏览器内置信任。私钥通常离线存储在硬件安全模块中,仅用于签发中间证书。
中间证书 (Intermediate CA):由根证书签发,负责日常签发服务器证书。可以有多级中间证书,形成更深的链。其私钥泄露影响范围有限。
服务器证书 (Server/Leaf Certificate):绑定到具体域名,由中间CA签发。包含SAN扩展以支持多域名,是实际配置在Web服务器上的证书。

自签名证书适用于:本地开发环境、内网测试服务器、IoT设备通信、微服务间mTLS等非公开场景。
局限性:浏览器会显示安全警告,用户需要手动信任;不适合面向公众的生产网站;无法被公网的证书透明度(CT)日志收录。生产环境建议使用Let's Encrypt等免费CA签发的受信任证书。

现代浏览器(Chrome 58+、Firefox 48+)要求服务器证书必须包含SAN扩展。即使CN字段填写了域名,如果缺少对应的SAN条目,浏览器也会拒绝连接并显示ERR_CERT_COMMON_NAME_INVALID错误。SAN支持DNS名称、IP地址、URI等多种类型,是当前证书验证的标准方式。通配符证书使用*.example.com格式覆盖所有一级子域名。

PEM (Privacy Enhanced Mail):Base64编码,以-----BEGIN CERTIFICATE-----开头、-----END CERTIFICATE-----结尾,每行64个字符。文本格式,易于复制粘贴,是Linux/nginx环境的首选。
DER (Distinguished Encoding Rules):二进制格式,Windows系统常用.cer扩展名。文件更紧凑但不能直接文本查看。
本工具生成的证书均采用PEM格式,方便直接使用。

Nginx:将服务器证书和中间证书拼接(server.crt在前,intermediate.crt在后),使用ssl_certificate /path/to/chained.crt;ssl_certificate_key /path/to/server.key;配置。客户端需要将根证书导入信任存储。
Apache:使用SSLCertificateFile指向服务器证书,SSLCertificateChainFile指向中间证书链。
Node.js:使用https.createServer({key, cert, ca}),其中ca参数传入中间证书。

Basic Constraints扩展定义了证书是否可以作为CA(证书颁发机构)。如果cA: true,该证书可以签发其他证书;如果cA: false,则为终端实体证书。此外,pathLenConstraint字段限制了下级CA的最大数量:0表示该CA只能签发终端证书(不能再有下级CA),1表示允许一级下级CA,以此类推。这是防止证书滥用的重要安全机制。

证书指纹是证书DER编码的哈希值(通常使用SHA-1或SHA-256),用于唯一标识证书。在证书钉扎(Certificate Pinning)中,应用可以硬编码信任证书的指纹来防止中间人攻击。在下载证书时,也可以通过比对指纹确认文件完整性。SHA-1指纹已不再安全,建议使用SHA-256指纹进行比对。