WSL 下使用 portless:如何把本地 CA 同时信任到 Linux 与 Windows 存储,让 Windows 浏览器零警告 WSL 下使用 portless如何把本地 CA 同时信任到 Linux 与 Windows 存储让 Windows 浏览器零警告【免费下载链接】portlessReplace port numbers with stable, named local URLs. For humans and agents.项目地址: https://gitcode.com/GitHub_Trending/por/portlessportless 用稳定的命名本地域名替代端口号portless myapp next dev之后应用在https://myapp.localhost上访问。默认启用 HTTPSHTTP/2首次运行时生成一套本地 CA 和服务证书并把 CA 加入系统信任存储。问题在于 WSL应用跑在 WSL 的 Linux 环境里浏览器却开在 Windows 一侧——如果 CA 只进了 Linux 信任存储Windows 浏览器打开这些.localhost地址就会一直报证书警告。portless 在 WSL 下的处理方式就是本文的主线portless trust会同时更新 Linux 信任存储和 Windows 当前用户的 Root 存储之后 Windows 浏览器即可验证由 WSL 中 portless 提供的 HTTPS 证书不再出现警告。前提条件来自 README 的 Requirements 一节Node.js 24macOS、Linux 或 Windows本文场景即 WSL 中的 Linux 发行版绑定 443 端口的首次运行需要提权macOS/Linux 上 portless 会自动用 sudo 提升。安装 portless推荐全局安装READMEnpm install -g portless也可以作为项目 dev 依赖安装npm install -D portless注意 README 的提示portless 目前处于 pre-1.0按项目安装时不同协作者可能使用不同版本状态目录格式在版本之间可能变化届时可能需要重新执行portless trust。首次运行生成 CA 并触发信任流程在你的项目目录里通过 portless 跑应用例如portless myapp next dev # - https://myapp.localhost首次运行会发生的事README 与 HTTPS 文档portless 生成本地 CA 和服务证书把 CA 加入系统信任存储过程中可能出现信任确认提示代理绑定 443 端口sudo 自动提权并自动启动代理应用通过PORT环境变量拿到一个 4000–4999 之间的随机端口通过代理暴露为https://myapp.localhost。在 WSL 中这一步的差别就在信任目标portless 会同时更新Linux 信任存储和Windows 当前用户的 Root 存储。官方 HTTPS 文档 的原话是On WSL, portless updates both the Linux trust store and the Windows current-user Root store. Windows browsers can then verify portless HTTPS certificates served from WSL.Linux 侧支持 Debian/Ubuntu、Arch、Fedora/RHEL/CentOS 和 openSUSE经由update-ca-certificates或update-ca-trustWindows 侧通过certutil写入README。如果你的发行版不在上述列表内文档没有给出处理方式先以portless doctor的 CA 信任检查结果为准。跳过提示后用 portless trust 补信任如果在首次运行时跳过了信任提示随时可以用一条命令补上portless trust该命令把 portless 的本地 CA 加入系统信任存储使用自动生成的证书做 HTTPS 时只需要做一次。在 WSL 里执行它就是同时写入 Linux 与 Windows 当前用户 Root 存储的那一步这也是标题中双存储信任的落点。验证doctor 检查与浏览器访问官方给出的健康检查命令是README Troubleshooting 一节portless doctor它在不改变任何状态的前提下检查 Node.js、状态目录、代理存活、路由条目、HTTPS CA 信任、主机名解析以及 LAN 模式前置条件并打印建议的修复措施。CA 信任这一项就是核对两边存储是否都到位的入口如果 doctor 报告异常按其输出的建议修复。另外可以用portless list查看当前活跃路由及其分配的端口确认应用已注册到代理。最终验证在 Windows 一侧的浏览器访问https://myapp.localhost。README 说明.localhost子域名在 Chrome、Firefox 和 Edge 中会自动解析到127.0.0.1。成功条件按文档描述是地址正常打开且没有证书警告首次运行完成信任后即 no prompts, no browser warnings见 HTTPS 文档。如果 Linux 侧终端里的 Node 进程需要调用 portless 下的其他.localhost服务portless 会自动为子进程设置NODE_EXTRA_CA_CERTS指向 portless CA独立于 portless 运行的 Node 进程需手动设置NODE_EXTRA_CA_CERTS~/.portless/ca.pem。可选分支与收尾关闭 HTTPS。如果暂时不需要 HTTPS用--no-tls以明文 HTTP 运行在 80 端口portless proxy start --no-tls此分支下不涉及 CA 信任问题也就没有双存储这回事。自带证书。如果你已有证书例如 mkcert 生成的portless proxy start --cert ./cert.pem --key ./key.pem清理。需要移除 portless 留下的东西时用portless clean停止运行中的代理、从 OS 信任存储移除 portless 安装的 CA、删除~/.portless下白名单文件与系统状态目录、移除/etc/hosts中的 portless 块可能需要提权。在 WSL 下它会从 Linux 和 Windows 两个信任存储中移除对应证书changelog。注意自定义--cert/--key指向的文件不会被删除若信任存储移除失败portless 会保留 CA 证书和私钥便于之后再次portless clean重试。边界与已知限制pre-1.0 状态格式状态目录格式可能随版本变化变更后可能需要重新执行portless trustREADME。非交互环境在无 TTY 或CI1的环境下portless 不会弹出提示而是直接以描述性错误退出方便 CI 尽早失败所以补信任这一步请在交互终端里做。网络边界非 LAN 模式下代理只绑定127.0.0.1与::1.localhost名称仅限运行代理的这台机器访问Windows 浏览器零警告指的是本机浏览器访问从 WSL 中经代理提供的证书。Safari.localhost依赖系统 DNS 解析器部分配置下可能解析不了文档给出的对策是portless hosts sync把当前路由写入/etc/hosts用portless hosts clean清理。完成以上步骤后可核对的落点是portless doctor的 CA 信任检查通过、portless list中能看到路由、Windows 浏览器打开https://myapp.localhost无证书警告。三者对应文档中描述的成功路径不需要额外手动维护证书。【免费下载链接】portlessReplace port numbers with stable, named local URLs. For humans and agents.项目地址: https://gitcode.com/GitHub_Trending/por/portless创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考