Skip to content

GitHub Copilot 自签名证书问题解决方案

问题描述

当在企业网络环境中使用 GitHub Copilot 时,您可能会遇到以下错误信息:

"GitHub Copilot could not connect to server. Extension activation failed: self signed certificate in certificate chain"

这个错误通常出现在企业网络环境中,原因是企业网络使用"中间人"(MITM)安全设备对 SSL/TLS 流量进行监控和检查。

问题根源

企业网络出于安全考虑,通常会:

  1. 拦截所有外发 SSL/TLS 流量
  2. 使用企业自己的证书颁发机构(CA)重新签名证书
  3. 在企业设备上预装企业 CA 证书

虽然浏览器和操作系统信任这些企业证书,但某些应用程序(如 VS Code)默认不信任系统证书存储,导致证书验证失败。

解决方案

方法一:使用证书管理扩展(推荐)

Windows 用户

  1. 安装 win-ca 扩展
  2. 按下 Ctrl+Shift+P,输入 @ext:ukoloff.win-ca
  3. 选择 "Win-Ca: Inject" 并设置为 append 模式
  4. 重启 VS Code

macOS 用户

  1. 安装 mac-ca-vscode 扩展
  2. 按照扩展说明进行配置
  3. 重启 VS Code

方法二:导出并配置企业证书

  1. 从浏览器导出企业根证书(通常为 .pem 格式)
  2. 设置环境变量:
bash
export NODE_EXTRA_CA_CERTS=/path/to/your/corporate/cert.pem
  1. 重启 IDE

方法三:IntelliJ/Android Studio 设置

bash
1. 打开设置 (Ctrl+Alt+S)
2. 搜索 "cert"
3. 勾选 "Accept non-trusted certificates automatically"
4. 重启 IDE
ini
# 在 /Applications/SpringToolSuite4.app/Contents/Eclipse/SpringToolSuite4.ini 中添加:
-Djavax.net.ssl.trustStoreType=KeychainStore

方法四:临时解决方案(不推荐用于生产环境)

WARNING

此方法会降低安全性,仅在测试环境中临时使用

bash
# 临时禁用证书验证
export NODE_TLS_REJECT_UNAUTHORIZED=0

方法五:脚本修补(高级用户)

创建 monkey-patch-copilot.sh 文件:

bash
_VSCODEDIR="$HOME/.vscode/extensions"
_COPILOTDIR=$(ls "${_VSCODEDIR}" | grep -E "github.copilot-[1-9].*" | sort -V | tail -n1)
_EXTENSIONFILEPATH="${_VSCODEDIR}/${_COPILOTDIR}/dist/extension.js"

if [[ -f "$_EXTENSIONFILEPATH" ]]; then
    echo "Applying patches..."
    perl -pi -e 's/,rejectUnauthorized:[a-z]}(?!})/,rejectUnauthorized:false}/g' ${_EXTENSIONFILEPATH}
    sed -i.bak 's/d={...l,/d={...l,rejectUnauthorized:false,/g' ${_EXTENSIONFILEPATH}
else
    echo "Copilot extension not found"
fi

运行脚本:

bash
chmod +x monkey-patch-copilot.sh
./monkey-patch-copilot.sh

企业网络特殊处理

如果企业使用 Zscaler 或其他安全代理:

  1. 暂时退出安全代理软件(如获允许)
  2. 重新加载 Copilot 扩展
  3. 或者联系 IT 部门将 Copilot 域名加入 SSL 检查白名单

验证解决方案

要确认问题是否解决,可以:

  1. 检查浏览器中任意 HTTPS 网站的证书颁发者
  2. 确认其中包含企业 CA
  3. 验证 Copilot 是否能正常连接

总结

GitHub Copilot 的自签名证书问题通常与企业网络安全策略相关。推荐使用证书管理扩展解决此问题,因为它既保持了安全性又提供了稳定的连接。如果问题持续存在,建议联系企业 IT 部门获取正确的企业根证书。

TIP

定期更新企业证书,确保持续的正常连接和安全性。