本地开发HTTP2站点时如何规避“连接并非私密”提示?
解决Chrome不信任Node.js HTTP2本地localhost证书的问题
我之前本地开发用HTTP2的时候也遇到过这个烦人的提示,每次点高级真的很折腾,下面几个方法亲测有效,你可以根据情况选:
方法一:手动将现有证书导入Chrome信任根库
如果你已经生成了localhost的证书,直接把它加到Chrome的受信任根证书里就行:
- 找到你生成的
.crt格式证书文件 - 在Chrome地址栏输入
chrome://settings/certificates打开证书设置面板 - 切换到「受信任的根证书颁发机构」标签页,点击「导入」按钮
- 按照导入向导选择你的证书文件,一路点击「下一步」完成导入
- 重启Chrome,再访问localhost就不会弹出那个“连接并非私密”的提示了
方法二:用mkcert生成自动被信任的localhost证书
手动生成证书容易踩坑,用mkcert工具能一键搞定本地可信证书:
- 先安装mkcert:比如Mac用
brew install mkcert,Windows可以用Chocolatey或者直接下载二进制文件 - 运行
mkcert -install,这个命令会自动在你的系统和Chrome的信任存储里添加mkcert的根证书 - 生成localhost证书:
mkcert localhost,执行后会得到localhost.pem(证书)和localhost-key.pem(私钥) - 把这两个文件替换到你的Node.js HTTP2项目中对应的配置位置,重启服务后,Chrome会直接信任这个证书
方法三:用Chrome命令行参数仅忽略localhost证书错误
如果你不想修改系统证书存储,也可以用Chrome的专属参数,只对你的localhost证书放行,不影响其他网站:
- 首先获取你现有证书的SPKI指纹,用openssl命令执行:
openssl x509 -in localhost.crt -pubkey -noout | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64 - 然后用带参数的方式启动Chrome:
- Windows:
chrome.exe --ignore-certificate-errors-spki-list=这里替换成上面得到的指纹字符串 - Mac:
open -a "Google Chrome" --args --ignore-certificate-errors-spki-list=这里替换成上面得到的指纹字符串
这样Chrome只会忽略你这个特定证书的错误,其他网站的证书校验依然正常
- Windows:
个人推荐方法二,最省心,一次配置之后本地开发所有HTTPS的localhost服务都能用。
内容的提问来源于stack exchange,提问作者callum
相关产品推荐
相关产品推荐

