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
Кроме того, посмотрите мой более свежий ответ « github: сбой проверки сертификата сервера »: возможно, вам придется перерегистрировать эти сертификаты:
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
, куда я должен был добавить сертификат. Кроме того, этот ответ был первой информацией, указывающей мне правильное направление в этом вопросеwhich git
.curl-config --ca
, но ничего не вернулось.Откройте свой терминал и выполните следующую команду:
Это работает для меня, и я использую систему Linux.
источник
git config --global http.sslverify false
Другой причиной этой проблемы может быть то, что ваши часы могут быть выключены. Сертификаты чувствительны ко времени.
Чтобы проверить текущее системное время:
Вы можете рассмотреть возможность установки NTP для автоматической синхронизации системного времени с доверенными серверами времени из глобального пула NTP . Например, чтобы установить в Debian / Ubuntu:
источник
git
сказать, это основной обмен SSL. Git построен с поддержкой SSL.Если вы используете git-сервер в частной сети и используете самозаверяющий сертификат или сертификат через IP-адрес; Вы также можете просто использовать git global config, чтобы отключить проверки ssl:
источник
Была такая же проблема. Вызывается самостоятельно выданным центром сертификации. Решил это, добавив файл .pem в / usr / local / share / ca-сертификаты / и вызвав
PS: файл pem в папке ./share/ca-certificates ДОЛЖЕН иметь расширение .crt
источник
Проверьте ваши системные часы,
$ date
Если это не правильно, проверка сертификата не удастся. Чтобы исправить системные часы,
$ apt-get install ntp
Часы должны синхронизироваться.
Наконец, введите команду клонирования снова.
источник
должен сказать вам, где проблема. В моем случае это произошло из-за того, что cURL не поддерживает сертификаты PEM при построении против NSS, поскольку эта поддержка не является основной в NSS ( # 726116 # 804215 # 402712 и более ).
источник
GIT_CURL_VERBOSE
. Я не упомянул об этом в своем ответе. +1Или просто запустите этот комментарий, чтобы добавить сертификат сервера в вашу базу данных:
Затем сделайте git clone снова.
источник
Я испортил свои CA-файлы, пока настраивал прокси-сервер goagent. Не могу получить данные из github и получить то же предупреждение:
используйте метод Vonc, получите сертификат от github и поместите его в /etc/ssl/certs/ca-certificates.crt, проблема решена.
источник
нет необходимости устанавливать для проверки git ssl значение false. Это происходит, когда система не имеет всех сертификатов центра сертификации. В основном люди, которые имеют подлинный сертификат SSL, не имеют промежуточного сертификата.
Просто добавьте полный текст промежуточного сертификата (всю цепочку отсутствующих CA и промежуточный сертификат) в
работает без запуска
update-ca-certificates
.То же самое касается сертификатов, созданных вручную, просто добавьте текст сертификата CA.
В конце: Успешный толчок: все актуально
источник
Что я сделал, чтобы решить эту проблему в терминале (Ubuntu 18.04):
Я получил два куска сертификата. И я скопировал куски сертификата в мой файл сертификата в
/etc/ssl/certs/ca-certificates.crt
.источник
---BEGIN CERTIFICATE---
и--- END CERTIFICATE ---
?Я установил Xubuntu на Raspberry pi 2, обнаружил ту же проблему со временем, когда NTP и автоматическая синхронизация с сервером были отключены (или не установлены). Получить NTP
и измените «Время и дата» с «Вручную» на «Синхронизировать с интернет-серверами»
источник
В конце концов, добавьте http.sslverify в ваш .git / config.
источник
git config http.sslVerify false
. Вы предлагаете редактировать конфигурацию Git для каждого репозитория, а не глобально, как предложено @ romain-vdk?Первое, что вы должны проверить, это разрешение файла
/etc/ssl
и/etc/ssl/certs
.Я сделал ошибку, отбросив права доступа к файлам (или уничтожив
rm -rf /etc/ssl/*
каталоги SSL ) при использованииssl-cert
имени / идентификатора группы при работе со своим инструментом управления центром сертификации .Именно тогда я заметил , что точно такое же сообщение об ошибке для
wget
иcurl
CLI инструментов браузера:Как только я увеличил разрешение на доступ к файлам
/etc/ssl
и/etc/ssl/cert
каталогамo+rx-w
, эти инструменты браузера CLI начали дышать немного легче:Мне также пришлось воссоздать подкаталог Java и восстановить каталоги сертификатов Trusted CA:
и побережье было чистым.
источник
Я только что столкнулся с той же проблемой с git-репозиторием, который всегда работает для меня. Проблема заключалась в том, что я получил к нему доступ через общедоступный WiFi-доступ, который перенаправляет на неавтоматизированный портал при первом подключении (например, для показа рекламы и согласования с предложениями).
источник
Скопируйте сертификат и пакет в один файл .crt и убедитесь, что между сертификатами в файле есть пустая строка.
Это сработало для меня на сервере GitLab после того, как я попробовал все в Интернете
источник