【问题标题】:self signed certificate in certificate chain on github copilotgithub copilot 证书链中的自签名证书
【发布时间】:2022-07-07 05:18:37
【问题描述】:

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

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

【问题讨论】:

    标签: github github-copilot


    【解决方案1】:

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

    • 大多数企业网络都有一个“中间人”设备,可以动态断开所有离开家进入互联网的安全 SSL 流量。这确保他们可以检查任何离开的流量,包括您的网上银行。通常,自动化会清除流量以寻找窃取公司机密或 IP 并发出警报。如果需要,这一切都会被记录下来并进一步审查。

    • 此操作会留下假证书链作为指纹。被调用站点的证书被替换为伪造的,并且由公司自己的私人 CA 机构签名。因此证书链中的自签名证书错误。

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

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

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

    • 通过您的浏览器很容易确认这确实存在。转到任何外部站点(如 Amazon)并查看站点“Cert”以查看 CA 是谁(Certification Path)。它应该“不”包含对您公司的任何引用。在您自己的个人笔记本电脑上查看公司网络外部的相同证书。

    ...“矩阵中的一个小故障”,安装 Win-CA 有助于再次隐藏它,一切都恢复正常。

    【讨论】:

      【解决方案2】:

      在 macOS 上,您可以使用此脚本对 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
      _EXTENSIONFILEPATH="${_VSCODEDIR}/${_COPILOTDIR}/dist/extension.js"
      _DEVEXTENSIONFILEPATH="${_VSCODEDIR}/${_COPILOTDEVDIR}/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
      

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

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

      【讨论】:

      • 我一直在寻找修复方法。谢谢!
      【解决方案3】:

      公司代理也有同样的问题,在附加模式下运行的win-ca 扩展解决了这个问题。

      【讨论】:

      • 感谢大家的工作
      【解决方案4】:

      这看起来与我得到的错误相似。我相信我们公司网络中这种情况的根源是 ssl 检查过程,因此当打开并检查 https 流量时,它会破坏证书链并显示此错误。解决方法是将 GitHub Copilot 服务器添加到 ssl 检查白名单中,以便不检查流量。

      【讨论】:

      • 有同样的问题;不幸的是,在军团中将事物列入白名单可能非常具有挑战性
      【解决方案5】:

      企业 VPN 是问题所在(与 @mark-derry 的相同)。

      Jetbrain 的 PyCharm / DataSpell 允许接受自签名证书。

      VSCode 似乎还没有这个选项。

      【讨论】:

        【解决方案6】:

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

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

        【讨论】:

          猜你喜欢
          • 2018-05-11
          • 1970-01-01
          • 1970-01-01
          • 2015-05-23
          • 2019-12-11
          • 1970-01-01
          • 2018-11-16
          • 2021-05-20
          • 2021-12-06
          相关资源
          最近更新 更多