为局域网内部服务器配置免安全警告的受信任域名,需四步:①用mkcert安装本地ca并签发域名证书;②修改hosts将域名解析至内网ip;③在nginx等服务中配置https并加载证书;④强制http跳转https并验证证书有效。

给局域网内的内部服务器配置免安全警告的受信任域名,是为了让开发、测试或企业内网系统在浏览器中不弹出“您的连接不是私密连接”等红色警告,同时确保 Service Worker、摄像头、地理位置等 API 正常调用。这不能靠改浏览器设置临时绕过,必须让浏览器真正信任该域名对应的 HTTPS 连接。
第一步:为内部域名生成可信的本地证书
浏览器只信任由它内置根证书签发的证书。自签名证书默认被拒,但你可以用 mkcert 工具,把本地根证书安装进系统和浏览器信任库,再用它签发域名证书——这是目前最轻量、最可靠、跨平台支持最好的方案。
在终端执行:mkcert -install。这一步会生成并安装一个名为 “localhost(local CA)” 的根证书到你的操作系统和 Chrome/Firefox/Edge 的信任列表中。注意:必须以管理员(Windows)或 sudo(macOS/Linux)权限运行,否则证书无法写入系统信任库。
接着为你的内部域名签发证书,例如要信任 dev.internal 和 api.dev.internal:mkcert dev.internal api.dev.internal 192.168.1.100。命令末尾的 IP 是可选的,但加了它,你就能用局域网 IP 直接访问且不报错——这对手机真机调试至关重要。
执行后会生成两个文件:dev.internal-key.pem(私钥)和 dev.internal.pem(证书)。这两个文件就是后续配置 HTTPS 的核心凭证。
第二步:将域名指向内部服务器(修改 hosts 文件)
浏览器访问 https://dev.internal 时,必须能解析到你的局域网服务器 IP,否则根本走不到 HTTPS 那一步。
方法一:编辑系统 hosts 文件
Windows 路径:C:\Windows\System32\drivers\etc\hosts;macOS/Linux 路径:/etc/hosts。
用管理员权限打开,追加一行:192.168.1.100 dev.internal api.dev.internal。这里 IP 必须与你服务器实际局域网 IP 完全一致,不能写 127.0.0.1,否则其他设备无法通过该域名访问。
保存后,在命令行运行 ipconfig /flushdns(Windows)或 sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder(macOS)刷新 DNS 缓存。这一步漏掉,浏览器仍会走公网 DNS,导致解析失败。
第三步:在 Web 服务中启用 HTTPS 并加载证书
以 Nginx 为例,你需要在 server 块中明确指定证书路径,并监听 443 端口:
server {<br> listen 443 ssl;<br> server_name dev.internal api.dev.internal;<br> ssl_certificate /path/to/dev.internal.pem;<br> ssl_certificate_key /path/to/dev.internal-key.pem;<br> # 其他 location、proxy_pass 配置照常写<br>}
关键点:证书路径必须是绝对路径,且 Nginx 进程要有读取权限;server_name 必须与 mkcert 签发时填的域名完全一致,包括大小写和点号位置,否则浏览器比对失败,依然显示不安全。
配置完成后重载 Nginx:sudo nginx -t && sudo nginx -s reload。如果提示 “no ssl_certificate is defined”,说明路径写错或文件不存在。
第四步:验证并强制所有请求走 HTTPS
在浏览器地址栏输入 https://dev.internal,首次访问时若看到锁图标且无警告,说明证书已生效。此时检查地址栏左侧:点击锁图标 → “连接是安全的” → “证书有效”,能看到颁发者是 “localhost(local CA)”。
为防止用户误输 http,必须强制跳转。在 Nginx 中新增一个 80 端口 server 块:server { listen 80; server_name dev.internal; return 301 https://$server_name$request_uri; }。这一步做完,任何 HTTP 请求都会自动升级为 HTTPS,彻底规避混合内容风险。
最后,在局域网内其他设备(如同事的笔记本、测试用的安卓手机)上,同样需要修改其 hosts 文件并刷新 DNS。iOS 设备无法改 hosts,但只要证书是 mkcert 签发且设备已信任该根证书(需手动导入 .pem 根证书),也能正常访问。











