You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自建PKI完整SSL证书链:如何解决浏览器不信任问题?

自建PKI证书链获浏览器信任参考指南

一、PKI体系架构

  • 根CA:离线存储,仅用于签署中间CA证书,生命周期最长(建议10年)
  • 中间CA:在线使用,用于签署服务器/客户端证书,生命周期建议5年
  • 终端证书:服务器/客户端使用,生命周期建议1年

二、证书生成全流程

1. 创建根CA

  • 初始化目录:
    mkdir -p rootCA/{certs,crl,newcerts,private}
    touch rootCA/index.txt
    echo 1000 > rootCA/serial
    
  • 编写root_openssl.cnf:
    [req]
    distinguished_name = req_distinguished_name
    x509_extensions = v3_ca
    
    [req_distinguished_name]
    countryName = CN
    stateOrProvinceName = Beijing
    localityName = Beijing
    organizationName = MyRootCA
    commonName = My Root CA
    
    [v3_ca]
    subjectKeyIdentifier = hash
    authorityKeyIdentifier = keyid:always,issuer
    basicConstraints = CA:TRUE
    keyUsage = cRLSign, keyCertSign
    
  • 生成根CA密钥与证书:
    openssl req -x509 -new -nodes -key rootCA/private/rootCA.key -sha256 -days 3650 -out rootCA/certs/rootCA.pem -config root_openssl.cnf
    

2. 创建中间CA

  • 初始化目录:
    mkdir -p intermediate/{certs,crl,newcerts,private}
    touch intermediate/index.txt
    echo 1000 > intermediate/serial
    
  • 编写intermediate_openssl.cnf:
    [req]
    distinguished_name = req_distinguished_name
    req_extensions = v3_req
    
    [req_distinguished_name]
    countryName = CN
    stateOrProvinceName = Beijing
    localityName = Beijing
    organizationName = MyIntermediateCA
    commonName = My Intermediate CA
    
    [v3_req]
    basicConstraints = CA:TRUE, pathlen:0
    keyUsage = cRLSign, keyCertSign
    subjectAltName = @alt_names
    
    [alt_names]
    DNS.1 = intermediate-ca.myorg.com
    
  • 生成中间CA密钥、CSR,并由根CA签署:
    openssl req -new -nodes -key intermediate/private/intermediate.key -out intermediate/certs/intermediate.csr -config intermediate_openssl.cnf
    openssl x509 -req -in intermediate/certs/intermediate.csr -CA rootCA/certs/rootCA.pem -CAkey rootCA/private/rootCA.key -CAcreateserial -out intermediate/certs/intermediate.pem -days 1825 -extensions v3_req -extfile intermediate_openssl.cnf
    

3. 生成服务器证书

  • 编写server_openssl.cnf(必须包含SAN):
    [req]
    req_extensions = v3_req
    distinguished_name = req_distinguished_name
    
    [req_distinguished_name]
    countryName = CN
    stateOrProvinceName = Beijing
    localityName = Beijing
    organizationName = MyOrg
    commonName = your-domain.com
    
    [v3_req]
    basicConstraints = CA:FALSE
    keyUsage = nonRepudiation, digitalSignature, keyEncipherment
    subjectAltName = @alt_names
    
    [alt_names]
    DNS.1 = your-domain.com
    DNS.2 = www.your-domain.com
    
  • 生成服务器密钥、CSR,并由中间CA签署:
    openssl genrsa -out server.key 2048
    openssl req -new -key server.key -out server.csr -config server_openssl.cnf
    openssl x509 -req -in server.csr -CA intermediate/certs/intermediate.pem -CAkey intermediate/private/intermediate.key -CAcreateserial -out server.pem -days 365 -extensions v3_req -extfile server_openssl.cnf
    

三、服务器配置

  • 构建证书链:将服务器证书与中间CA证书合并,顺序为服务器证书在前,中间CA在后
    cat server.pem intermediate/certs/intermediate.pem > chain.pem
    
  • Nginx配置示例:
    server {
        listen 443 ssl;
        server_name your-domain.com www.your-domain.com;
    
        ssl_certificate /path/to/chain.pem;
        ssl_certificate_key /path/to/server.key;
    
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;
    }
    

四、浏览器信任配置

1. 系统信任库导入(Chrome/Edge等适用)

  • Linux:
    sudo cp rootCA/certs/rootCA.pem /usr/local/share/ca-certificates/rootCA.crt
    sudo update-ca-certificates
    
  • Windows:
    双击rootCA.pem → 「安装证书」 → 选择「本地计算机」 → 下一步 → 「将所有证书放入下列存储」 → 浏览选择「受信任的根证书颁发机构」 → 完成
  • macOS:
    双击rootCA.pem → 「添加到钥匙串」 → 选择「系统」钥匙串 → 找到证书右键「显示简介」 → 「信任」选项卡选择「始终信任」

2. Firefox独立信任配置

打开Firefox → 设置 → 隐私与安全 → 找到「证书」区域 → 「查看证书」 → 「权威机构」 → 「导入」 → 选择rootCA.pem → 勾选「信任该CA来标识网站」 → 确认

五、验证方法

  • 用OpenSSL验证证书链有效性:
    openssl verify -CAfile rootCA/certs/rootCA.pem -untrusted intermediate/certs/intermediate.pem server.pem
    
  • 浏览器访问网站,确认无证书错误提示

内容的提问来源于stack exchange,提问作者Dragis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 00:50:46