You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Firefox 59本地环境自签名证书被拦截且无法添加例外求助

解决Firefox 59+拦截Docker中Apache自签名证书且无法添加例外的问题

我之前在Windows环境下用Docker跑Apache 2.4,访问https://app.dev时也碰到过和你一模一样的问题!Firefox 59之后突然就拦着不让进,连安全例外都加不了,折腾了好几天才搞定,分享几个亲测有效的方案:

方案1:生成符合Firefox要求的自签名证书

Firefox 59开始对自签名证书的要求严格了,必须包含**SAN(Subject Alternative Name)**扩展,旧证书大概率没加这个,所以被拦截。步骤如下:

  • 先创建一个OpenSSL配置文件(比如命名为openssl-san.cnf),在文件里添加SAN配置:
    [req]
    distinguished_name = req_distinguished_name
    x509_extensions = v3_req
    prompt = no
    
    [req_distinguished_name]
    CN = app.dev
    
    [v3_req]
    keyUsage = keyEncipherment, dataEncipherment
    extendedKeyUsage = serverAuth
    subjectAltName = @alt_names
    
    [alt_names]
    DNS.1 = app.dev
    DNS.2 = *.app.dev # 如果需要子域名的话可以加上
    
  • 用这个配置生成新的证书和密钥:
    openssl req -x509 -newkey rsa:4096 -keyout app.dev.key -out app.dev.crt -days 365 -config openssl-san.cnf -nodes
    
  • 把生成的app.dev.keyapp.dev.crt替换掉Docker容器中Apache配置里对应的证书文件,重启Apache容器。

方案2:调整Firefox的安全配置(临时应急)

如果不想重新生成证书,可以临时修改Firefox的配置来绕过,但不推荐长期使用,毕竟会降低安全性:

  • 在Firefox地址栏输入about:config,点击“接受风险并继续”
  • 找到security.enterprise_roots.enabled,将其值改为true——这样Firefox会信任Windows系统证书存储里的证书,你只需要把自签名证书导入Windows的“受信任的根证书颁发机构”即可
  • (不推荐)如果上面的方法没用,可以试试把security.cert_pinning.enforcement_level设为0,关闭证书固定验证,但这个操作会让浏览器面临更多安全风险,用完记得改回去。

方案3:搭建本地CA签发证书(长期规范方案)

这是最靠谱的做法,相当于自己做一个可信的证书颁发机构:

  • 生成本地根CA证书和密钥:
    openssl req -x509 -newkey rsa:4096 -keyout rootCA.key -out rootCA.crt -days 3650 -nodes -subj "/CN=Local Dev CA"
    
  • rootCA.crt导入Windows系统的“受信任的根证书颁发机构”,同时导入Firefox的证书管理器(选项→隐私与安全→证书→查看证书→证书颁发机构→导入)
  • 用根CA给app.dev签发域名证书:
    1. 生成域名证书请求文件app.dev.csr和密钥app.dev.key
    2. 创建签发配置文件(可复用方案1里的openssl-san.cnf
    3. 用根CA签发证书:openssl x509 -req -in app.dev.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out app.dev.crt -days 365 -extfile openssl-san.cnf -extensions v3_req
  • 把签发好的证书部署到Apache容器里,之后访问https://app.dev就会被Firefox信任,不需要添加例外了。

额外注意点

  • 确保Docker容器的443端口已经正确映射到Windows本地端口
  • 检查C:\Windows\System32\drivers\etc\hosts文件里有没有把app.dev指向127.0.0.1
  • 替换证书后一定要重启Apache容器,确保配置生效

内容的提问来源于stack exchange,提问作者Kévin Husson

火山引擎 最新活动