live server https配置不生效需检查绝对路径、证书/私钥格式(无密码pem)、同目录存放、无空格中文,并确认settings.json中liveserver.settings.https配置正确且未被覆盖。

Live Server 插件 HTTPS 配置不生效?检查证书路径和文件格式
Live Server 插件默认只走 HTTP,开启 HTTPS 必须手动指定 cert 和 key 路径,且对路径写法、文件内容极其敏感。常见现象是插件启动后仍用 HTTP、控制台报 Error: error:0909006C:PEM routines:get_name:no start line 或直接静默失败。
- 路径必须是绝对路径(如
/Users/me/project/localhost.pem),相对路径会被忽略 -
cert文件里只能有服务证书,不能混入中间证书或根证书;key文件必须是未加密的 PEM 格式(如有密码,先用openssl rsa -in protected.key -out localhost-key.pem解密) - 两个文件必须放在同一目录下,且文件名不能含空格或中文
- VSCode 设置中搜索
liveServer.settings.https,确认cert和key字段值正确,且整个配置项没被其他插件或 workspace 设置覆盖
Vite / Webpack Dev Server 本地 HTTPS 启动报错:证书加载逻辑差异大
不同工具对证书的加载方式、参数名、路径解析规则完全不同,抄错一个字就起不来服务。不是“配了就行”,而是得按工具契约来。
- Vite:在
vite.config.ts中写server: { https: { key: fs.readFileSync('./localhost-key.pem'), cert: fs.readFileSync('./localhost.pem') } }—— 路径是相对于项目根目录,不是配置文件位置 - Webpack Dev Server:命令行必须加
--https参数,否则--key和--cert被完全忽略;且路径支持相对路径,但不能带file://前缀 - http-server:必须用
-S启用 HTTPS,-C指定证书,-K指定私钥,三者缺一不可;-C后不能跟空格,例如http-server -S -Clocalhost.pem -Klocalhost-key.pem
Node.js 进程拒绝加载证书?根本不在 VSCode 设置里
VSCode 的 http.proxyStrictSSL 或界面里关掉 SSL 验证,对 Node.js 进程完全无效。你写的 https.request、axios 或 Vite 代理转发到本地 HTTPS 后端时出的 SELF_SIGNED_CERT_IN_CHAIN 错误,根源在 Node.js TLS 层本身。
- 错误堆栈里一定出现
TLSSocket.onConnectSecure和code: 'SELF_SIGNED_CERT_IN_CHAIN',这是明确信号 - 临时验证可设环境变量
NODE_TLS_REJECT_UNAUTHORIZED=0(仅限开发机可信网络) - 长期方案是把公司根证书或
mkcert生成的根证书路径通过NODE_EXTRA_CA_CERTS注入,例如NODE_EXTRA_CA_CERTS=/path/to/rootCA.pem node index.js - 别改 Node.js 内置 CA 包,也别试图在代码里全局 patch
https.globalAgent,不可靠且易被覆盖
mkcert 根证书装了但 Chrome / Edge 不认?重启和地址写法是关键
mkcert -install 成功不代表完事。浏览器是否信任,取决于它实际读取的证书库是否更新,以及你访问的地址是否匹配证书 SAN(Subject Alternative Name)。
- Chrome / Edge 在 Windows 上复用系统证书存储,
mkcert -install后必须重启浏览器(有时甚至要重启系统)才生效 - 生成证书时必须包含所有可能访问的地址:
mkcert localhost 127.0.0.1 ::1,漏掉::1会导致 Safari 或某些 Node.js 版本校验失败 - 如果用
127.0.0.1:5500访问却只签了localhost,浏览器会报NET::ERR_CERT_COMMON_NAME_INVALID,这不是证书无效,而是域名不匹配 - VSCode Live Server 插件默认绑定
localhost,若你在浏览器输127.0.0.1,就得确保证书里包含它
localhost.pem 文件,在 Live Server 里能用,在 Vite 里可能因路径解析错位而报错,在 Node.js 脚本里又可能因没注入 CA 而被拒绝——得一层一层确认作用域。











