即使使用證書後也無法在本地驗證頒發者的權限
執行時
wget https://docs.conda.io/projects/conda/en/4.6.0/_downloads/52a95608c49671267e40c689e0bc00ca/conda-cheatsheet.pdf
我有這個錯誤:
--2020-06-03 20:55:06-- https://docs.conda.io/projects/conda/en/4.6.0/_downloads/52a95608c49671267e40c689e0bc00ca/conda-cheatsheet.pdf Resolving docs.conda.io (docs.conda.io)... 104.31.71.166, 104.31.70.166, 172.67.149.185, ... Connecting to docs.conda.io (docs.conda.io)|104.31.71.166|:443... connected. ERROR: cannot verify docs.conda.io's certificate, issued by ‘CN=SSL-SG1-GFRPA2,OU=Operations,O=Cloud Services,C=US’: Unable to locally verify the issuer's authority. To connect to docs.conda.io insecurely, use `--no-check-certificate'.
我試圖解決這個問題的方法:
sudo update-ca-certificates -f
- 打開url時從瀏覽器導出證書,保存在文件
conda.cer
中,然後執行openssl x509 -in conda.cer -inform der -outform pem -out conda.pem
,再執行:wget --ca-certificate=conda.pem \ https://docs.conda.io/projects/conda/en/4.6.0/_downloads/52a95608c49671267e40c689e0bc00ca/conda-cheatsheet.pdf
=> 仍然是同樣的錯誤 3. 將文件放在
/etc/ssl/certs
,sudo cp conda.pem /etc/ssl/certs
=> 下仍然是同樣的錯誤我知道我可以使用
--no-check-certificate
,但這不是我想要的。其他一些網站也會出現此問題。有人知道原因嗎?謝謝。
UPDATE1 我嘗試了以下步驟:1)
sudo cp conda.crt /usr/share/ca-certificates/mozilla/
2)
sudo vi /etc/ca-certificates.conf
並mozilla/conda.crt
在末尾追加
執行
sudo update-ca-certificates -f
我可以看到在 /etc/ssl/certs 下創建的符號連結,如下所示:
conda.pem -> /usr/share/ca-certificates/mozilla/conda.crt
但是,它仍然無法正常工作!
UPDATE2 - 已刪除。請參考更新3
更新 3
上面 URL 中的證書鏈包含 4 個證書。
為了確保不遺漏任何一個,我將所有 4 個證書(即
conda1.crt
,conda2.crt
,conda3.crt
,conda4.crt
)放入/usr/share/ca-certificates/mozilla/
並重複UPDATE1中提到的步驟。符號連結在 中成功創建
/etc/ssl/certs
。確認:
openssl verify -no-CAfile -no-CApath -partial_chain -CAfile conda1.pem conda2.pem conda2.pem: OK openssl verify -no-CAfile -no-CApath -partial_chain -CAfile conda2.pem conda3.pem conda3.pem: OK openssl verify -no-CAfile -no-CApath -partial_chain -CAfile conda3.pem conda4.pem conda4.pem: OK
結果:wget 仍然失敗
更新4
部分原因找到了
攔截網路的 Bluecoat 服務是根本原因(儘管它對 VM Ubuntu 有問題,但主機 Windows 可以正常使用 ssl)。
這兩個作品(
conda1.crt
從瀏覽器中提取,應該來自 Bluecoat 服務):wget --ca-certificates=/etc/ssl/certs/ca-certificates.crt https://docs.conda.io/projects/conda/en/4.6.0/_downloads/52a95608c49671267e40c689e0bc00ca/conda-cheatsheet.pdf wget --ca-certificates=conda1.crt https://docs.conda.io/projects/conda/en/4.6.0/_downloads/52a95608c49671267e40c689e0bc00ca/conda-cheatsheet.pdf
目前狀態
我已按照UPDATE1
conda1.crt
中/etc/ssl/certs
描述的步驟進行安裝。被認為是正確的,如UPDATE4中的步驟所示。conda1.crt``wget
但是,即使經過這一步,連接仍然失敗。
如果我強制禁用 Bluecoat 服務,ssl 問題就消失了。
但是,我需要使用 Bluecoat,因此非常感謝在 Bluecoat 下解決問題的任何幫助!
元:不是一個真正的答案,但太多的評論
UPDATE1 我嘗試了以下步驟:
$$ using certs exported by browser that are actually from Bluecoat, not really from conda $$
sudo cp conda.crt /usr/share/ca-certificates/mozilla/
sudo vi /etc/ca-certificates.conf 並在末尾附加 mozilla/conda.crt
3)$$ $$sudo update-ca-certificates -f
- 我可以看到在 /etc/ssl/certs 下創建的符號連結,如下所示: conda.pem -> /usr/share/ca-certificates/mozilla/conda.crt
但是,它仍然是不工作![未指定
wget --ca-certificates=
]這很令人驚訝。它適用於我在 Ubuntu 18.04 上,使用我的測試證書(因為我當然沒有你的證書)。請注意,每個證書都以
/etc/ssl/certs
三種方式放置:(1)“友好”文件名,如 Digicert_something 或 Go_Daddy_whatever 連結回/usr/share/ca-certificates/
;(2) 連結到“友好”名稱的“雜湊名稱”,例如3513523f.0 -> DigiCert_Global_Root_CA.pem
;(3) 單個連接文件ca-certificates.crt
,其中包含所有證書的 PEM 塊,但沒有人類可讀的名稱。wget
使用 OpenSSL,它使用來自 (2) 和/或 (3) 的證書數據,具體取決於程式碼 - 我沒有時間下載和閱讀 - 但從來沒有 (1),所以檢查 (1) 不會t證明很多;檢查 (2) 和 (3)。如果這些是正確的,那麼我會嘗試openssl s_client
它應該使用相同的信任庫和邏輯,但提供有關它發現的任何問題的更詳細資訊(被許多其他資訊混亂)。如果這沒有幫助,我認為您必須獲取 wget 的原始碼,使用符號重建並調試它,這實在是太費力了。也就是說,雖然 update-ca-certificates(1) 聯機幫助頁只是順便提及它,但我認為他們打算讓您添加內容,
/usr/local/share/ca-certificates
而不是/usr/share/ca-certificates/mozilla
因為後者由包管理器維護,而前者在/usr/local
其中傳統上和每層(7)的站點或機器本地添加。/usr/share/doc/ca-certificates/README.Debian
更具體:If you want to install local certificate authorities to be implicitly trusted, please put the certificate files as single files ending with ".crt" into /usr/local/share/ca-certificates/ and re-run 'update-ca-certificates'. ...
一些小問題
從瀏覽器導出證書 … 和
openssl x509 -inform der -outform pem ...
.Windows 上的 Chrome 和 Internet Explorer 使用 Windows 的“證書嚮導”(或其中之一),它允許在 DER 或“base-64”(實際上是 PEM)以及“p7b”中導出單個證書允許整個鏈條。(它還可以選擇包含自己證書的私鑰,但這不適用於此處。)Firefox 允許相同的選擇,以及 PEM 中的鏈。AFAIK only Edge 僅限於在 DER 中導出,並且需要轉換步驟——至少是我目前擁有的版本;Edge 應該在今年年初加入 Chromium,但我不知道我是否真的這樣做了,因為 W10 的理念是防止你知道,更不用說控制你的電腦上發生的事情。
$$ interception causes $$僅 VM Ubuntu 的問題,主機視窗工作正常……
主機是否由網路所有者擁有或管理?例如,機器和網路都是企業的嗎*?*如果是這樣,在安裝像 Bluecoat 這樣的攔截器以在需要信任它的機器上自動安裝根證書時很常見——尤其是可以使用“域”和“組策略”輕鬆集中管理的 Windows 機器。(請注意,這種類型的 Windows 域與 Internet 上使用的“域名”和“域名系統 DNS”無關——不要混淆它們。)一個簡單的信號是,如果您的登錄名不是一個簡單的名字喜歡
fred
或電子郵件喜歡fred@outlook.com
,但在形式domain\fred
。