非localhost部署提示证书颁发机构无效及自签证书Chrome不安全标识问题
问题解决办法
报错ERR_CERT_AUTHORITY_INVALID修复方案
错误原因
- 证书的主题备用名称(SAN)配置错误:你生成证书的
certificate.txt里IP条目写法有误,SAN的IP配置仅支持填写纯IP地址,不能携带端口号,你写的IP: X.X.X.X:XXXX不符合规范,Chrome会判定证书与访问地址不匹配。 - 证书IP与实际AWS公网IP不匹配:如果生成证书时填写的IP不是AWS虚拟机的实际公网IP,访问时也会触发证书校验失败。
ssl_context='adhoc'配置无效:该配置是Flask自动生成临时随机自签证书,并非你自己签发的可信证书,本身就不被浏览器信任。- axios的
rejectUnauthorized: false仅在Node.js环境生效:浏览器端发起请求时该参数无效,浏览器会强制校验证书有效性。
操作步骤
- 修正
certificate.txt配置,修改req_ext段内容,替换为AWS虚拟机的实际公网IP,移除端口和多余注释:
[ req_ext ] subjectAltName = DNS: localhost, DNS: test.domain.en, IP: 你的AWS公网IP
- 重新执行openssl命令生成新的csr和crt证书。
- 将新生成的
certificate.crt重新安装到本地设备的「受信任的根证书颁发机构」存储区,Windows系统建议选择「本地计算机」级别安装,Mac系统安装后需要将证书标记为「始终信任」,安装完成后重启Chrome。 - 替换AWS虚拟机上Flask服务目录下的旧证书和私钥为新生成的文件,重启Flask服务。
附加问题解答
通过OpenSSL生成的自签证书可以移除Chrome地址栏的「不安全」标识,只需满足以下全部条件:
- 证书必须配置正确的SAN(主题备用名称),与你访问的地址(域名/IP)完全匹配,Chrome新版本已不再校验证书的CN字段,仅校验SAN。
- 证书被正确安装到客户端的「受信任的根证书颁发机构」存储区。
- 证书有效期不超过398天,你生成的365天有效期符合要求。
- 证书的密钥用法符合TLS服务端证书要求,常规openssl生成的自签证书默认满足该条件。
内容的提问来源于stack exchange,提问作者nJoooy
相关产品推荐
相关产品推荐

