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.key和app.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签发域名证书:- 生成域名证书请求文件
app.dev.csr和密钥app.dev.key - 创建签发配置文件(可复用方案1里的
openssl-san.cnf) - 用根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




