You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 10:27:43