如何让VS Code DevContainers信任自签名代理/防火墙证书?
企业防火墙中断TLS/SSL连接,如何将根证书添加至VS Code信任库以解决DevContainers连接问题?
我的企业防火墙正在中断TLS/SSL连接,我希望将根证书添加至VS Code信任库,请问是否可行?
以下VS Code设置似乎均无法影响DevContainers的HTTP连接:
"http.experimental.systemCertificatesV2": false "http.systemCertificates": false "http.proxyStrictSSL": false
我的.devcontainer.json配置如下:
{ "features": { "ghcr.io/devcontainers/features/java:1": { "installMaven": "true" } }, "name": "Java", "image": "mcr.microsoft.com/devcontainers/java:1-21-bullseye" }
遇到的错误信息:
Resolving Feature dependencies for 'ghcr.io/devcontainers/features/java:1'... * Processing feature: ghcr.io/devcontainers/features/java:1 Error: self signed certificate in certificate chain at TLSSocket.onConnectSecure (node:_tls_wrap:1553:34) at TLSSocket.emit (node:events:514:28) at TLSSocket._finishInit (node:_tls_wrap:970:8) at TLSWrap.onhandshakedone (node:_tls_wrap:746:12)
可行方案:将企业根证书加入DevContainers信任链
VS Code的全局HTTP设置无法直接作用于DevContainers容器内部,问题根源是容器系统和Java的信任库未包含企业根证书,需通过以下步骤解决:
1. 容器内导入根证书
- 将企业根证书文件(如
company-root.crt)放入项目的.devcontainer目录。 - 修改
.devcontainer.json,添加postCreateCommand自动导入证书到系统和Java信任库:
{ "features": { "ghcr.io/devcontainers/features/java:1": { "installMaven": "true" } }, "name": "Java", "image": "mcr.microsoft.com/devcontainers/java:1-21-bullseye", "postCreateCommand": "sudo cp .devcontainer/company-root.crt /usr/local/share/ca-certificates/ && sudo update-ca-certificates && sudo keytool -importcert -file /usr/local/share/ca-certificates/company-root.crt -keystore $JAVA_HOME/lib/security/cacerts -alias company-root -storepass changeit -noprompt" }
注意:
changeit是Java默认密钥库密码,若你的环境已修改,请替换为对应密码。
2. 配置容器代理(若企业使用代理)
如果企业网络需要通过代理访问外部资源,在.devcontainer.json中添加代理环境变量:
"remoteEnv": { "HTTP_PROXY": "http://你的代理地址:端口", "HTTPS_PROXY": "http://你的代理地址:端口", "NO_PROXY": "localhost,127.0.0.1" }
3. 验证配置生效
重新构建DevContainers后,执行以下命令验证:
- 验证系统证书:
curl -I https://github.com
返回200系列状态码则说明系统信任库配置成功。
- 验证Java证书:
keytool -list -keystore $JAVA_HOME/lib/security/cacerts -alias company-root -storepass changeit
能看到证书信息则说明Java信任库配置完成。
内容的提问来源于stack exchange,提问作者Lucas Pottersky
相关产品推荐
相关产品推荐

