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

Firefox报MOZILLA_PKIX_ERROR_V1_CERT_USED_AS_CA等证书问题求助

问题:自签名SAN证书在Firefox中无法正常工作,出现PKIX错误

初始错误

错误代码:MOZILLA_PKIX_ERROR_V1_CERT_USED_AS_CA
错误描述:

未作为信任锚的X.509版本1证书被用于签发服务器证书。X.509版本1证书已被弃用,不应再用于签署其他证书。

确认CA证书和服务器证书均为v3版本,但Firefox仍报错。

更新:
删除cert9.db后出现新错误:

错误代码:MOZILLA_PKIX_ERROR_SELF_SIGNED_CERT
已重新将CA证书添加到Firefox信任库,但问题依旧。

我的证书生成步骤

生成证书颁发机构(CA):

openssl genrsa -out ca.key 2048
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/CN=Proxy CA"
openssl genrsa -out cert.key 2048

生成服务器证书:

openssl req -new -sha256 -key cert.key -config config_file -subj "/CN=hostname" -reqexts SAN -out hostname.csr
openssl x509 -req -extfile v3.ext -in hostname.csr -days 3650 -signkey cert.key -set_serial random_string -out hostname.crt

config_file内容:

contents of /etc/ssl/openssl.cnf
.....
[SAN]
subjectAltName=DNS:hostname

v3.ext内容:

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment

问题分析与解决方法

错误根源

  1. 第一个错误:req -x509命令默认生成v1版本CA证书,即便你认为是v3,实际未添加v3扩展,导致Firefox判定为废弃的v1证书。
  2. 第二个错误:服务器证书用-signkey cert.key做了自签名,而非用CA证书签发,所以Firefox识别为自签名证书,不认可你导入的CA信任。

正确生成流程

1. 生成v3版本CA证书

创建ca_v3.ext文件:

basicConstraints = CA:TRUE
keyUsage = keyCertSign, cRLSign
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer

重新生成CA证书:

openssl genrsa -out ca.key 2048
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/CN=Proxy CA" -extfile ca_v3.ext
openssl genrsa -out cert.key 2048

2. 用CA证书签发服务器证书

修改服务器证书签发命令,替换自签名参数为CA签名:

openssl req -new -sha256 -key cert.key -config config_file -subj "/CN=hostname" -reqexts SAN -out hostname.csr
openssl x509 -req -extfile v3.ext -in hostname.csr -days 3650 -CA ca.crt -CAkey ca.key -CAcreateserial -out hostname.crt

注:-CAcreateserial会自动生成序列号文件,比手动指定更可靠。

3. 重新配置Firefox信任

  • 关闭所有Firefox窗口
  • 删除cert9.db(路径通常为~/.mozilla/firefox/[你的配置文件夹]/)
  • 重启Firefox,导入新的ca.crt,勾选「信任此CA识别网站」

验证证书版本

生成后检查版本,确保均为v3:

# 检查CA证书版本
openssl x509 -in ca.crt -text -noout | grep Version
# 检查服务器证书版本
openssl x509 -in hostname.crt -text -noout | grep Version

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:27:08