[英]How to trust an expired SSL certificate with Subversion?
考慮以下場景。 舊的 SVN 服務器,可通過 HTTPS 訪問,該服務器已移動到另一個域(沒有新證書)並且其證書已過期。 我被這種情況困住了,因為我對遠程沒有影響。
同樣,我堅持使用 Scientific Linux 6.3 附帶的這個 Subversion 客戶端版本:
$ svn --version
svn, version 1.6.11 (r934486)
compiled Feb 10 2015, 17:07:04
我知道--non-interactive --trust-server-cert
,但它沒有幫助,盡管文檔表明這些應該可用並且可以在 Subversion 1.6 版本中使用。 它給我的錯誤是:
svn: OPTIONS of 'https://svn.company.tld/svn/project/trunk': Server certificate verification failed: certificate has expired, certificate issued for a different hostname, bad certificate chain (https://svn.company.tld)
當我以交互方式運行它時,我只能暫時接受證書或拒絕它。 因此,所有建議交互運行一次然后非交互運行的好食譜對我來說都沒有好處。 事實上,這就是我在使用 Ubuntu 的較新 Subversion 客戶端上總是這樣做的方式。 我看到的是這個(已編輯):
Error validating server certificate for 'https://svn.company.tld:443':
- The certificate hostname does not match.
- The certificate has expired.
- The certificate has an unknown error.
Certificate information:
- Hostname: *.oldcompanyname.tld
- Valid: from Tue, 02 Jun 2009 00:00:00 GMT until Wed, 06 Jul 2011 23:59:59 GMT
- Issuer: www.digicert.com, DigiCert Inc, US
- Fingerprint: fd:fd:fd:fd:fd:fd:fd:fd:fd:fd:fd:fd:fd:fd:fd:fd:fd:fd:fd:fd
(R)eject or accept (t)emporarily?
暫時接受允許我緩存憑據和所有憑據,但它會再次提示暫時信任證書或拒絕它從遠程服務器提取的每個修訂版本。
所以這對我來說不是選擇,因為我至少需要它是自動化的。
我還調整了~/.subversion/servers
以包含:
[global]
ssl-authority-files = /home/username/.subversion/cacert-svn.pem
其中 PEM 文件包含來自以下openssl
調用輸出的編輯內容(僅實際證書塊):
openssl s_client -showcerts -connect svn.company.tld:443 < /dev/null > cacert-svn.pem
我還嘗試將這些證書拆分為單獨的文件並將它們列在以分號分隔的列表中(文檔不清楚單個 PEM 文件是否可以包含多個 Subversion 證書,我知道對於 Apache 來說這是有效的)。 這些都不起作用。
我還嘗試將~/.subversion
文件夾從svn, version 1.8.8 (r1568071)
到 Scientific Linux。 這也失敗了。
我如何說服這個給定的 Subversion 客戶端永久接受這個特定的證書,盡管它已經過期並被頒發給不同的主機名?
我讀過的東西沒有幫助,因為它要么不適用於我的 Subversion 客戶端,要么不適用:
您可以使用以下 svn 選項:
--trust-server-cert-failures=unknown-ca,cn-mismatch,expired,not-yet-valid,other
然后它不再問了? 案件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.