TLDR:
hostname=XXX
port=443
trust_cert_file_location=`curl-config --ca`
sudo bash -c "echo -n | openssl s_client -showcerts -connect $hostname:$port -servername $hostname \
2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' \
>> $trust_cert_file_location"
Довга відповідь
Основна причина полягає в тому, що ваш комп'ютер не довіряє органу сертифікації, який підписав сертифікат, який використовується на сервері Gitlab . Це не означає, що сертифікат є підозрілим, але він може бути самостійно підписаний або підписаний установою / компанією, яка не входить до списку ваших ОС ОС. Що вам потрібно зробити, щоб обійти проблему на своєму комп’ютері, це сказати їй довіряти цьому сертифікату - якщо у вас немає причин підозріло ставитися до цього.
Вам потрібно перевірити веб-сертифікат, який використовується для вашого сервера gitLab, і додати його до свого </git_installation_folder>/bin/curl-ca-bundle.crt
.
Щоб перевірити, чи працює принаймні клон без перевірки зазначеного сертифіката, ви можете встановити:
export GIT_SSL_NO_VERIFY=1
#or
git config --global http.sslverify false
Але це було б лише для тестування, як показано в " SSL працює з браузером, wget і curl, але не вдається з git ", або в цій публікації блогу .
Перевірте свої параметри GitLab, випуску 4272 .
Щоб отримати цей сертифікат (який потрібно було б додати у curl-ca-bundle.crt
файл), введіть:
echo -n | openssl s_client -showcerts -connect yourserver.com:YourHttpsGitlabPort \
2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
(" yourserver.com
'- це ваше ім'я сервера GitLab, і YourHttpsGitlabPort
зазвичай це порт https 443
)
Щоб перевірити CA (емітент органу сертифікації), введіть:
echo -n | openssl s_client -showcerts -connect yourserver.com:YourHttpsGilabPort \
2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' \
| openssl x509 -noout -text | grep "CA Issuers" | head -1
Примітка: Валерій Катков пропонує у коментарях додати -servername
опцію до команди openssl, інакше команда не відображає сертифікат для www.github.com у випадку Валерія.
openssl s_client -showcerts -servername www.github.com -connect www.github.com:443
Фіндекано додає в коментарях :
для визначення місця розташування curl-ca-bundle.crt
ви можете скористатися командою
curl-config --ca
Також дивіться мою останню відповідь " Не вдалося підтвердити сертифікат сервера ": вам, можливо, доведеться перевстановити ці сертифікати:
sudo apt-get install --reinstall ca-certificates
sudo mkdir /usr/local/share/ca-certificates/cacert.org
sudo wget -P /usr/local/share/ca-certificates/cacert.org http://www.cacert.org/certs/root.crt http://www.cacert.org/certs/class3.crt
sudo update-ca-certificates
git config --global http.sslCAinfo /etc/ssl/certs/ca-certificates.crt
curl-config --ca
повернувся/etc/ssl/certs/ca-certificates.crt
, саме там мені довелося додати сертифікат. Окрім цього, ця відповідь була першою інформацією, яка вказує на мене у правильному напрямку із цим питанням