github copilot 上证书链中的自签名证书

Mat*_*us 62 github github-copilot

我安装了 GitHub copilot 但扩展不起作用,总是显示以下错误

在此输入图像描述

GitHub Copilot 无法连接到服务器。扩展激活失败:“证书链中的自签名证书”

来源:GitHub Copilot(扩展)Show Output log

我能做什么来解决这个问题?

Dre*_*020 79

Copilot 错误:\xe2\x80\x9c GitHub Copilot 无法连接到服务器。扩展激活失败:证书链 \xe2\x80\x9d 中的自签名证书通常是在企业网络后面使用 CoPilot 引起的。

\n
    \n
  • 大多数企业网络都有一个 \xe2\x80\x98Man-in-the-middle\xe2\x80\x99 设备,可以动态地打开所有离开家进入互联网的安全 SSL 流量。这确保他们可以检查任何离开的流量,包括您的网上银行。通常,自动化会清理流量,寻找盗窃公司机密或知识产权的行为并发出警报。如果需要的话,这一切都会被记录并进一步审查。

    \n
  • \n
  • 此操作会留下一个假证书链作为指纹。被调用站点的证书被替换为假证书,并且由公司\xe2\x80\x99s 自己的私有 CA 机构签名。因此,证书链中的自签名证书出现错误。

    \n
  • \n
  • 在任何公司设备(电话\\笔记本电脑)上,公司 CA 都已安装为受信任的 CA。因此,本地浏览器和其他桌面应用程序信任这个伪造的证书链 - 因此不要担心有人正在窥探您的安全网络流量(该公司确实拥有网络和设备)。

    \n
  • \n
  • 默认情况下,VSCode 不信任已安装的桌面证书,因此它注意到 GitHub 证书不再由受信任的公共 CA 机构签名。

    \n
  • \n
  • 正如Rypox上面所述,VSCode 扩展 \xe2\x80\x98Win-CA\xe2\x80\x99 (必须设置为 \xe2\x80\x98append\xe2\x80\x99 模式)解决了这个问题。它告诉 VSCode 也信任安装在员工桌面上的 CA\xe2\x80\x99s。这让 VSCode 再次高兴地信任假证书链。不需要“白名单”,也与“ VPN ”无关。但当然也不是那么明显。一个有趣的 CA 信任问题。

    \n
  • \n
  • 通过浏览器可以轻松确认其确实存在。转到任何外部站点(例如 Amazon)并查看站点 \xe2\x80\x9cCert\xe2\x80\x9d 以查看 CA\xe2\x80\x99 是谁(证书路径)。它应该 \xe2\x80\x98not\xe2\x80\x99 包含对您公司的任何引用。在您自己的个人笔记本电脑上查看公司网络外部的同一证书。

    \n
  • \n
\n

\xe2\x80\xa6 \xe2\x80\x9cbit 是 Matrix\xe2\x80\x9d 中的一个小故障,安装 Win-CA 有助于再次隐藏它,一切看起来都恢复正常。

\n

  • 你知道用VS2022怎么做吗?我无法关闭我的公司 VPN,并且我无法知道我的 VPN 使用哪些证书来解决该问题,有什么想法吗? (7认同)
  • 您是否也知道 PyCharm 的修复方法?非常感谢! (4认同)
  • “win-ca”扩展让我使用“append”修复了问题!我正在运行:Win10 VM、Copilot、VSCode、WSL1、Ubuntu 20。Copilot 一直在 Ubuntu(WSL1、guest)上工作。证书错误仅发生在 Windows 端。不要忘记重新启动 VSCode。 (2认同)

小智 58

我对公司代理也有同样的问题。win -ca扩展解决了这个问题。

解决问题的步骤:

  1. 安装win-ca
  2. win-ca设置中,切换Injectappend模式(这不是默认模式)。
  3. 重新启动 VsCode

PS:这是仅限 Windows 的解决方案。对于 Mac,请参阅这篇文章

  • 需要按照路径设置 `append` 模式选择 File / Preferences / Settings / Extensions / win-ca (4认同)
  • 我在我的 mac Mac CA VSCode https://marketplace.visualstudio.com/items?itemName=linhmtran168.mac-ca-vscode 上使用了这个 (2认同)

And*_*ich 29

对于任何 MacOS 用户,我发现 VSCode 扩展 linhmtran168.mac-ca-vscode 也可以提供帮助。它类似于前面提到的win-ca。

https://marketplace.visualstudio.com/items?itemName=linhmtran168.mac-ca-vscode

  • 这有多安全? (6认同)
  • 这对我也有用。只需安装它并重新启动 vscode (4认同)

lee*_*eek 21

在 macOS 和 Linux 上,您可以使用此脚本对 Copilot 扩展进行猴子修补以使其正常工作:

更新: 还修复了副驾驶聊天错误:

对话请求出错。检查日志以获取更多详细信息。

_VSCODEDIR="$HOME/.vscode/extensions"
_COPILOTDIR=$(ls "${_VSCODEDIR}" | grep -E "github.copilot-[1-9].*" | sort -V | tail -n1) # For copilot
_COPILOTDEVDIR=$(ls "${_VSCODEDIR}" | grep "github.copilot-nightly-" | sort -V | tail -n1) # For copilot-nightly
_COPILOTCHATDIR=$(ls "${_VSCODEDIR}" | grep -E "github.copilot-chat-*" | sort -V | tail -n1) # For copilot-chat
_EXTENSIONFILEPATH="${_VSCODEDIR}/${_COPILOTDIR}/dist/extension.js"
_DEVEXTENSIONFILEPATH="${_VSCODEDIR}/${_COPILOTDEVDIR}/dist/extension.js"
_CHATEXTENSIONFILEPATH="${_VSCODEDIR}/${_COPILOTCHATDIR}/dist/extension.js"

if [[ -f "$_EXTENSIONFILEPATH" ]]; then
    echo "Found Copilot Extension, applying 'rejectUnauthorized' patches to '$_EXTENSIONFILEPATH'..."
    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 "Couldn't find the extension.js file for Copilot, please verify paths and try again or ignore if you don't have Copilot..."
fi
if [[ -f "$_DEVEXTENSIONFILEPATH" ]]; then
    echo "Found Copilot-Nightly Extension, applying 'rejectUnauthorized' patches to '$_DEVEXTENSIONFILEPATH'..."
    perl -pi -e 's/,rejectUnauthorized:[a-z]}(?!})/,rejectUnauthorized:false}/g' ${_DEVEXTENSIONFILEPATH}
    sed -i.bak 's/d={...l,/d={...l,rejectUnauthorized:false,/g' ${_DEVEXTENSIONFILEPATH}
else
    echo "Couldn't find the extension.js file for Copilot-Nightly, please verify paths and try again or ignore if you don't have Copilot-Nightly..."
fi
if [[ -f "$_CHATEXTENSIONFILEPATH" ]]; then
    echo "Found Copilot-Chat Extension, applying 'rejectUnauthorized' patches to '$_CHATEXTENSIONFILEPATH'..."
    perl -pi -e 's/,rejectUnauthorized:[a-z]}(?!})/,rejectUnauthorized:false}/g' ${_CHATEXTENSIONFILEPATH}
    sed -i.bak 's/d={...l,/d={...l,rejectUnauthorized:false,/g' ${_CHATEXTENSIONFILEPATH}
else
    echo "Couldn't find the extension.js file for Copilot-Chat, please verify paths and try again or ignore if you don't have Copilot-Chat..."
fi
Run Code Online (Sandbox Code Playgroud)

monkey-patch-copilot.sh然后另存为类似的东西chmod +x monkey-patch-copilot.sh。然后您应该能够运行:./monkey-patch-copilot.sh来应用补丁。

注:我不是原作者。这是在 Copilot 反馈论坛上找到的。

  • 我一直在寻找修复方法。谢谢你! (4认同)
  • 也可以在 Linux 上运行! (3认同)

Sid*_*rth 14

我找到了一个针对 Intellij 的解决方案。我已在https://sidd.io/2023/01/github-copilot-self-signed-cert-issue/上发表了有关此内容的博客

在较高的层面上,我认为插件的架构可能是相同的:

IDE Native CoPilot Plugin---进行RPC调用--->NodeJS based CoPilot Agent

NodeJS based CoPilot Agent代理对自签名证书有问题(至少在我的情况下)。

修复如下:

  1. 导出讨论中的自签名证书
  2. .pem如果尚未将其转换为格式
  3. 将此证书的路径导出.pemNODE_EXTRA_CA_CERTS变量
  4. 重新启动你的 IDE,它应该可以工作了

  • 此答案将有助于解决 Visual Studio 的问题。感觉比安装扩展更正确。 (2认同)
  • 什么证书“正在讨论”? (2认同)