1 2 3
|
$ git push -u origin master
fatal: unable to access 'https://my.git.com:port/user_name/project.git/':
server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
這主要是系統不信任我 git 伺服器的憑證,因此過不了系統的安全認證。查到的解決方法有二:
略過或關閉 SSL 憑證檢查。
告訴系統該伺服器可以信任。
略過或關閉 SSL 憑證檢查
如果你信任該伺服器,可以直接設定環境變數,讓 git 略過憑證的驗證:
1 | export GIT_SSL_NO_VERIFY=1
但這方法並不能永久略過,每隔一陣子,它就又會來報個錯刷刷存在感。若要讓 git 永久略過 SSL 憑證檢查,必須直接將設定寫入 git 的設定檔:
1 | git config --global http.sslVerify false
這種解法比較像是閉上眼不管了,憑證問題依然沒有解決,而且像這樣永久略過會讓 SSL 少一層防護,因此不是很想這麼做。
匯入伺服器憑證
比較標準的作法應該是要匯入伺服器憑證,告訴系統該伺服器可以信任。在 Office 指南這個部落格,找到了份 script,可以直接做到這件事。
建立一個 script
1 | $ touch import_ssl.sh
然後用 vim 對該檔案進行編輯,進入編輯模式後,輸入下面的內容,當然 hostname 跟 port 記得要換成自己的。
1 2 3 4 5 6 7 8 9 10 11 | # Git 伺服器資訊
hostname=my.git.com
port=port_num
# 取得自己 OS 中放置 CA 的位置
trust_cert_file_location=`curl-config --ca`
# 匯入 Git 伺服器憑證
sudo bash -c "echo -n | openssl s_client -showcerts -connect $hostname:$port \
2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' \
>> $trust_cert_file_location"
最後執行 script
|
|
|
|
|