簡體   English   中英

github copilot 證書鏈中的自簽名證書

[英]self signed certificate in certificate chain on github copilot

我安裝了 GitHub 副駕駛但擴展不起作用,總是顯示以下錯誤

在此處輸入圖像描述

我能做些什么來解決這個問題?

Copilot 錯誤:“ GitHub Copilot 無法連接到服務器。 擴展激活失敗:證書鏈中的自簽名證書”通常是在企業網絡后面使用 CoPilot 引起的。

  • 大多數企業網絡都有一個“中間人”設備,可以動態斷開所有離開家進入互聯網的安全 SSL 流量。 這確保他們可以檢查任何離開的流量,包括您的網上銀行。 通常,自動化會清除流量以尋找竊取公司機密或 IP 並發出警報。 如果需要,這一切都會被記錄下來並進一步審查。

  • 此操作會留下一個假證書鏈作為指紋。 被調用站點的證書被替換為偽造的,並且由公司自己的私人 CA 機構簽名。 因此證書鏈錯誤中的自簽名證書。

  • 從任何公司設備 (Phones\Laptop) 上,公司 CA 已安裝為受信任的 CA。 因此,本地瀏覽器和其他桌面應用程序信任這個偽造的證書鏈 - 因此不要擔心有人在窺探您的安全網絡流量(該公司確實擁有網絡和設備)。

  • 默認情況下,VSCode 不信任已安裝的桌面證書,因此它注意到 GitHub 證書不再由受信任的公共 CA 機構簽名。

  • 正如Rypox上面所說,VSCode 擴展“Win-CA”(必須設置為“附加”模式)解決了這個問題。 它告訴 VSCode 也信任安裝在員工桌面上的 CA。 這讓 VSCode 再次高興地信任了假證書鏈。 不需要“白名單”,與“ VPN ”無關。 但當然也不是那么明顯。 一個有趣的 CA 信任問題。

  • 確認這確實存在很容易從您的瀏覽器。 轉到任何外部站點(如 Amazon)並查看站點“Cert”以查看 CA 是誰(Certification Path)。 它應該“不”包含對您公司的任何引用。 在您自己的個人筆記本電腦上從公司網絡外部查看相同的證書。

......“矩陣中的一個小故障”,安裝 Win-CA 有助於再次隱藏它,一切看起來都恢復正常。

公司代理也有同樣的問題,以附加模式運行的win-ca擴展解決了它。

在 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 反饋論壇上找到的。

對於任何 MacOS 用戶,VSCode 擴展 linhmtran168.mac-ca-vscode 也可以提供幫助。 它類似於前面提到的win-ca。

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

這看起來與我得到的錯誤相似。 我相信我們公司網絡中這種情況的根源是 ssl 檢查過程,因此當打開並檢查 https 流量時,它會破壞證書鏈並顯示此錯誤。 解決方法是將 GitHub Copilot 服務器添加到 ssl 檢查白名單,以便不檢查流量。

企業 VPN 是問題所在(與 @mark-derry 的相同)。

Jetbrain 的 PyCharm / DataSpell 允許接受自簽名證書。

VSCode 似乎還沒有這個選項。

簡單:方法1。只需執行此代碼。

git 配置 --global http.sslVerify false

方法 2:遵循本指南? 稍后謝謝我,因為我為您節省了時間:。)。 別客氣!

https://mattferderer.com/fix-git-self-signed-certificate-in-certificate-chain-on-windows

我找到了一個適用於 Intellij 的解決方案。 我已經在https://sidd.io/2023/01/github-copilot-self-signed-cert-issue/上寫了關於它的博客

在高層次上,我認為插件的架構可能是相同的:

IDE Native CoPilot Plugin --- 進行 RPC 調用 ---> 基於 NodeJS NodeJS based CoPilot Agent

而這個NodeJS based CoPilot Agent代理在自簽名證書方面存在問題(至少在我的情況下)。

修復如下:

  1. 導出討論中的自簽名證書
  2. 將其轉換為.pem格式(如果尚未轉換)
  3. 將此.pem證書的路徑導出到NODE_EXTRA_CA_CERTS變量
  4. 重啟你的 IDE 它應該可以工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM