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"
Długa odpowiedź
Podstawowym powodem jest to, że komputer nie ufa urzędowi certyfikacji, który podpisał certyfikat używany na serwerze Gitlab . Nie oznacza to, że certyfikat jest podejrzany, ale może być samopodpisany lub podpisany przez instytucję / firmę, która nie znajduje się na liście urzędów certyfikacji twojego systemu operacyjnego. Aby obejść problem na komputerze, musisz powiedzieć mu, aby zaufał temu certyfikatowi - jeśli nie masz powodu, aby być podejrzanym.
Musisz sprawdzić certyfikat internetowy używany na serwerze gitLab i dodać go do swojego </git_installation_folder>/bin/curl-ca-bundle.crt
.
Aby sprawdzić, czy przynajmniej klon działa bez sprawdzania wspomnianego certyfikatu, możesz ustawić:
export GIT_SSL_NO_VERIFY=1
#or
git config --global http.sslverify false
Ale byłoby to tylko do testowania, jak pokazano w „ SSL działa z przeglądarką, wget i curl, ale nie działa z git ” lub w tym poście na blogu .
Sprawdź ustawienia GitLab, problem 4272 .
Aby uzyskać ten certyfikat (który musisz dodać do curl-ca-bundle.crt
pliku), wpisz:
echo -n | openssl s_client -showcerts -connect yourserver.com:YourHttpsGitlabPort \
2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
(gdzie „ yourserver.com
” to nazwa serwera GitLab i YourHttpsGitlabPort
zwykle jest to port https 443
)
Aby sprawdzić urząd certyfikacji (wystawcę ośrodka certyfikacji), wpisz:
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
Uwaga: Valeriy Katkov sugeruje w komentarzach, aby dodać -servername
opcję do polecenia openssl, w przeciwnym razie polecenie to nie pokaże certyfikatu dla www.github.com w przypadku Valeriy.
openssl s_client -showcerts -servername www.github.com -connect www.github.com:443
Findekano dodaje w komentarzach :
aby zidentyfikować lokalizację curl-ca-bundle.crt
, możesz użyć polecenia
curl-config --ca
Zobacz także moją najnowszą odpowiedź „ github: weryfikacja certyfikatu serwera nie powiodła się ”: może być konieczne ponowne zainstalowanie tych certyfikatów:
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
wrócił/etc/ssl/certs/ca-certificates.crt
, gdzie musiałem dodać certyfikat. Poza tym ta odpowiedź była pierwszą informacją wskazującą mi właściwy kierunek w tej kwestiiwhich git
.curl-config --ca
, ale nic nie zostało zwrócone.Otwórz terminal i uruchom następujące polecenie:
Działa dla mnie i używam systemu Linux.
źródło
git config --global http.sslverify false
Inną przyczyną tego problemu może być wyłączenie zegara. Certyfikaty są wrażliwe na czas.
Aby sprawdzić bieżący czas systemowy:
Możesz rozważyć zainstalowanie NTP w celu automatycznej synchronizacji czasu systemowego z zaufanymi internetowymi serwerami czasu z globalnej puli NTP . Na przykład, aby zainstalować na Debian / Ubuntu:
źródło
git
powiedzmy, że jest to podstawowa wymiana SSL. Git jest zbudowany z obsługą SSL.Jeśli używasz serwera git w sieci prywatnej i używasz certyfikatu z podpisem własnym lub certyfikatu za pośrednictwem adresu IP; możesz także po prostu użyć git global config, aby wyłączyć kontrole ssl:
źródło
Miałem ten sam problem. Spowodowane przez samodzielnie wydany urząd certyfikacji. Rozwiązano go, dodając plik .pem do / usr / local / share / ca-certyfikaty / i wywołując
PS: plik pem w folderze ./share/ca-certificates MUSI mieć rozszerzenie .crt
źródło
Sprawdź swój zegar systemowy,
$ date
Jeśli nie jest poprawne, sprawdzenie certyfikatu zakończy się niepowodzeniem. Aby poprawić zegar systemowy,
$ apt-get install ntp
Zegar powinien się zsynchronizować.
Na koniec wprowadź ponownie polecenie klonowania.
źródło
powinien powiedzieć ci, gdzie jest problem. W moim przypadku było to spowodowane tym, że cURL nie wspiera certyfikatów PEM, gdy jest budowany w oparciu o NSS, ponieważ obsługa ta nie jest linią główną w NSS ( # 726116 # 804215 # 402712 i więcej ).
źródło
GIT_CURL_VERBOSE
. Nie wspomniałem o tym w mojej odpowiedzi. +1Lub po prostu uruchom ten komentarz, aby dodać certyfikat serwera do bazy danych:
Następnie ponownie klonuj git.
źródło
Zepsułem swoje pliki CA podczas konfigurowania goagent proxy. Nie można pobrać danych z github i otrzymać takie samo ostrzeżenie:
użyj metody Vonc, pobierz certyfikat z github i umieść go w /etc/ssl/certs/ca-certificates.crt, problem rozwiązany.
źródło
nie ma potrzeby ustawiania weryfikacji git ssl w celu ustawienia wartości false. Jest to spowodowane tym, że system nie ma wszystkich certyfikatów urzędu certyfikacji. Głównie ludzie, którzy mają prawdziwy certyfikat SSL, nie posiadają certyfikatu pośredniego.
Wystarczy dodać pełny tekst certyfikatu pośredniego (cały łańcuch brakującego urzędu certyfikacji i certyfikatu pośredniego) do
działa bez uruchamiania
update-ca-certificates
.To samo dotyczy ręcznie wygenerowanych certyfikatów, wystarczy dodać tekst certyfikatu urzędu certyfikacji.
Na koniec: Push udane: wszystko jest aktualne
źródło
Co zrobiłem, aby rozwiązać ten problem w terminalu (Ubuntu 18.04):
Mam dwie części certyfikatu. I skopiowałem części certyfikatu do mojego pliku certyfikatu do
/etc/ssl/certs/ca-certificates.crt
.źródło
---BEGIN CERTIFICATE---
a--- END CERTIFICATE ---
?Zainstalowałem Xubuntu na Raspberry pi 2, znalazłem ten sam problem z czasem, ponieważ NTP i automatyczna synchronizacja serwera były wyłączone (lub nie zostały zainstalowane). Uzyskaj NTP
i zmień „Czas i datę” z „Ręcznie” na „Zachowaj synchronizację z serwerami internetowymi”
źródło
Ostatecznie dodaj http.sslverify do swojego .git / config.
źródło
git config http.sslVerify false
. Czy sugerujesz edycję konfiguracji Git dla poszczególnych repozytoriów, a nie globalnie, jak sugeruje @ romain-vdk?Pierwszą rzeczą, którą powinieneś sprawdzić, jest zezwolenie na pliki
/etc/ssl
i/etc/ssl/certs
.Popełniłem błąd, upuszczając uprawnienia do plików (lub usuwając
rm -rf /etc/ssl/*
katalogi SSL ) podczas używaniassl-cert
nazwy / identyfikatora grupy podczas pracy z moim narzędziem zarządzania urzędem certyfikacji .To właśnie wtedy zauważyłem dokładnie ten sam komunikat o błędzie dla
wget
icurl
CLI Przeglądarka Narzędzia:Kiedy podniosłem uprawnienia do plików
/etc/ssl
i/etc/ssl/cert
katalogówo+rx-w
, te narzędzia przeglądarki CLI zaczęły nieco łatwiej oddychać:Musiałem także odtworzyć podkatalog Java i zrekonstruować katalogi certyfikatów Trusted CA:
a wybrzeże było czyste.
źródło
Właśnie spotkałem ten sam problem z repozytorium git, które zawsze działa dla mnie. Problem polegał na tym, że uzyskiwałem do niego dostęp przez publiczny dostęp do Wi-Fi, który przekierowuje do niewoli portalu przy pierwszym połączeniu (na przykład, aby wyświetlać reklamy i zgadzać się z tos).
źródło
Skopiuj certyfikat i pakiet do jednego pliku .crt i upewnij się, że między certyfikatami w pliku jest pusta linia.
To zadziałało dla mnie na serwerze GitLab po wypróbowaniu wszystkiego w Internecie.
źródło