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

如何为Chrome和Firefox创建Linux本地开发可用的有效自签名证书?

我明白你在本地开发时遇到的自签名证书信任问题——浏览器不认这些证书确实挺烦人的。不用买付费证书,咱们可以通过给本地CA(证书颁发机构)签名的方式来创建浏览器信任的自签名证书,这比直接生成自签名证书靠谱多了,因为浏览器会信任咱们自己创建的CA根证书。下面是具体步骤,亲测在Linux下有效:

步骤1:创建自己的本地CA根证书

首先生成CA的私钥和根证书,这些是咱们后续给服务端证书签名的「根凭证」:

  • 生成CA私钥(记得设置强密码,别泄露):
    openssl genrsa -des3 -out my-local-ca.key 2048
    
  • 生成CA根证书(有效期设长点,比如10年,省得频繁更新):
    openssl req -x509 -new -nodes -key my-local-ca.key -sha256 -days 3650 -out my-local-ca.pem
    
    填写信息时,**Common Name(CN)**可以填个好记的名字,比如My Local Development CA,其他字段可以随便填,不影响核心功能。
步骤2:创建服务端证书请求(CSR)和私钥

接下来为你的本地服务(比如localhost或者自定义本地域名dev.myapp.com)生成证书请求和私钥:

  • 生成服务端私钥:
    openssl genrsa -out localhost.key 2048
    
  • 生成证书请求文件(CSR):
    openssl req -new -key localhost.key -out localhost.csr
    
    这里的Common Name必须和你访问的域名完全一致——比如用localhost访问就填localhost,用自定义域名就填对应域名,其他字段随意。
步骤3:用本地CA给服务端证书签名

现在用咱们自己的CA根证书给刚才的CSR签名,生成可信的服务端证书:

  • 先创建一个扩展配置文件(比如localhost.ext),用来添加Subject Alternative Name(SAN)——这是现在浏览器的硬性要求,没有SAN就算CN匹配也会报错:
    authorityKeyIdentifier=keyid,issuer
    basicConstraints=CA:FALSE
    keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
    subjectAltName = @alt_names
    
    [alt_names]
    DNS.1 = localhost
    # 如果有其他本地域名,比如dev.myapp.com,就加一行:DNS.2 = dev.myapp.com
    
  • 用CA签名生成服务端证书(有效期设为1年即可):
    openssl x509 -req -in localhost.csr -CA my-local-ca.pem -CAkey my-local-ca.key -CAcreateserial -out localhost.crt -days 365 -sha256 -extfile localhost.ext
    
步骤4:把CA根证书导入浏览器和系统

这一步是关键!只有让浏览器信任咱们的CA根证书,它才会信任用这个CA签名的服务端证书:

  • Chrome/Chromium:设置里搜索「管理证书」,进入「受信任的根证书颁发机构」标签,导入my-local-ca.pem,勾选「信任该证书用于识别网站」。
  • Firefox:Firefox有独立的证书存储,在设置里搜索「证书」,进入「查看证书」,切换到「证书颁发机构」标签,点击「导入」,选择my-local-ca.pem,勾选「信任由此证书颁发机构标识的网站」。
  • 可选:导入到Linux系统证书存储:
    把my-local-ca.pem复制到/usr/local/share/ca-certificates/目录,然后运行:
    sudo update-ca-certificates
    
    这样系统级别的工具(比如curl、wget)也会信任这个CA。
最后:配置你的服务使用新证书

把生成的localhost.key和localhost.crt配置到你的本地服务(比如Nginx、Apache、Node.js服务等)里,重启服务后再访问,浏览器就会显示绿色的安全锁了!

另外,如果你之前生成过普通自签名证书,记得先把那些旧证书从浏览器的「不受信任的证书」列表里删掉,避免冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:37:42