配置Nginx反向代理后IP访问触发HTTPS证书错误该如何解决
本地localhost场景SSL证书信任问题解决方案
公网CA机构确实不会为localhost、内网IP这类非公开可验证的域名/IP颁发SSL证书,针对本地开发调试场景,可采用以下几种方案解决浏览器“连接不是私密连接”报错:
方案1:使用mkcert生成本地受信任证书(推荐)
该方案通过在本地设备生成自定义根证书并导入系统/浏览器信任链,再用该根证书签发对应域名/IP的证书,浏览器会将其识别为合法有效证书,无使用时效限制,适合长期本地开发场景:
- 安装mkcert工具后,执行命令安装本地根证书到系统信任链:
mkcert -install - 生成对应域名和IP的SSL证书,示例如下(替换为你实际用到的本地IP):
mkcert localhost 127.0.0.1 ::1 xxx.xxx.xxx.xxx - 补充Nginx的443端口SSL配置,示例如下:
server { listen 443 ssl; server_name localhost xxx.xxx.xxx.xxx; # 替换为你实际生成的证书路径 ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/cert.key; # 其余站点业务配置 } # 你原有80端口跳转配置保留即可 server { listen 80; server_name localhost xxx.xxx.xxx.xxx; return 301 https://$host$request_uri; }
- 重启Nginx后访问对应HTTPS地址即可消除报错。
方案2:浏览器临时绕过校验(仅临时调试用)
如果仅需临时测试不想配置证书,可在Chrome的报错页面,无需点击任何位置,直接用键盘输入thisisunsafe,Chrome会临时放行当前站点的访问权限,重启浏览器后规则自动失效。
方案3:绑定自定义域名使用公网CA证书
如果你持有公网域名的产权,可将该域名的子域名(如local-dev.yourdomain.com)解析到本地服务器IP,再申请免费公网CA颁发的证书配置到Nginx即可,所有设备访问该子域名时都不会触发证书信任报错。
注意:你当前的Nginx仅配置了80端口的跳转规则,未配置443端口的SSL监听规则,这也是HTTPS访问报错的核心原因之一,需先补充443端口的服务配置。
内容的提问来源于stack exchange,提问作者OLTO and SUGI-cube Project
相关产品推荐
相关产品推荐

