root@sclrdev:/home/sclr/certs/FreshCerts# curl --ftp-ssl --verbose ftp://{abc}/ -u trup:trup --cacert /etc/ssl/certs/ca-certificates.crt
* About to connect() to {abc} port 21 (#0)
* Trying {abc}...
* Connected to {abc} ({abc}) port 21 (#0)
< 220-Cerberus FTP Server - Home Edition
< 220-This is the UNLICENSED Home Edition and may be used for home, personal use only
< 220-Welcome to Cerberus FTP Server
< 220 Created by Cerberus, LLC
> AUTH SSL
< 234 Authentication method accepted
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS alert, Server hello (2):
* SSL certificate problem: unable to get local issuer certificate
* Closing connection 0
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: http://curl.haxx.se/docs/sslcerts.html
curl performs SSL certificate verification by default, using a "bundle"
of Certificate Authority (CA) public keys (CA certs). If the default
bundle file isn't adequate, you can specify an alternate file
using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
the bundle, the certificate verification probably failed due to a
problem with the certificate (it might be expired, or the name might
not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
the -k (or --insecure) option.
curl
ssl
openssl
ssl-certificate
x509certificate
użytkownik3812540
źródło
źródło
Odpowiedzi:
Dotyczy błędu „Problem z certyfikatem SSL: nie można uzyskać certyfikatu lokalnego wystawcy”. Należy zauważyć, że dotyczy to systemu wysyłającego żądanie CURL, a NIE serwer odbierający żądanie.
Pobierz najnowszy cacert.pem z https://curl.haxx.se/ca/cacert.pem
Dodaj następujący wiersz do php.ini: (jeśli jest to hosting współdzielony i nie masz dostępu do php.ini, możesz dodać to do .user.ini w public_html).
curl.cainfo="/path/to/downloaded/cacert.pem"
Upewnij się, że ścieżka jest zamknięta w podwójnych cudzysłowach !!!
Domyślnie proces FastCGI będzie analizował nowe pliki co 300 sekund (w razie potrzeby możesz zmienić częstotliwość dodając kilka plików, jak sugerowano tutaj https://ss88.uk/blog/fast-cgi-and-user-ini- files-the-new-htaccess / ).
źródło
curl.cainfo="/path/to/downloaded/cacert.pem" // Do not forget to write between quotes
Błąd kończy się, ponieważ cURL nie może zweryfikować certyfikatu dostarczonego przez serwer.
Istnieją dwie opcje, aby to uruchomić:
Użyj cURL z
-k
opcją, która pozwala curl na tworzenie niezabezpieczonych połączeń, to znaczy cURL nie weryfikuje certyfikatu.Dodaj główny urząd certyfikacji (urząd certyfikacji podpisujący certyfikat serwera) do
/etc/ssl/certs/ca-certificates.crt
Powinieneś użyć opcji 2, ponieważ zapewnia ona połączenie z bezpiecznym serwerem FTP.
źródło
Rozwiązałem ten problem, dodając jeden kod wiersza w skrypcie cURL:
Ostrzeżenie : To sprawia, że żądanie jest całkowicie niepewne (patrz odpowiedź @YSU)!
źródło
if( stristr("127.0.0.1",$_SERVER["SERVER_NAME"] ) || stristr("localhost",$_SERVER["SERVER_NAME"] )) curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
W moim przypadku okazało się, że jest to problem z instalacją mojego certyfikatu w usłudze, którą próbowałem wykorzystać za pomocą cURL. Nie udało się powiązać / połączyć certyfikatów pośrednich i głównych z certyfikatem mojej domeny . Na początku nie było oczywiste, że to był problem, ponieważ Chrome go opracował i zaakceptował certyfikat, pomimo pomijania certyfikatów pośrednich i głównych.
Po spakowaniu certyfikatu wszystko działało zgodnie z oczekiwaniami. Tak się pakowałem
I powtarzane dla wszystkich certyfikatów pośrednich i głównych.
źródło
-----END CERTIFICATE----------BEGIN CERTIFICATE-----
w pakiecie i dostaniesz niejasny błąd:curl: (77) error setting certificate verify locations
Dla mnie prosta instalacja certyfikatów pomogła:
źródło
Miał ten problem po instalacji Git Extensions v3.48. Próbowałem ponownie zainstalować mysysgit, ale ten sam problem. Na koniec musiałem wyłączyć (proszę wziąć pod uwagę wpływ na bezpieczeństwo!) Git weryfikacja SSL za pomocą:
ale jeśli masz certyfikat domeny, lepiej dodaj go do (Win7)
źródło
--global
wyłączania protokołu SSL tylko dla repozytorium, w którym występują problemy. Zobacz groups.google.com/forum/#!topic/git-for-windows/mlqn5J4OLlw w celu omówienia aktualnych niezbędnych plików crt.Niedawno napotkaliśmy ten błąd. Okazuje się, że było to związane z nieprawidłowym zainstalowaniem certyfikatu głównego w katalogu magazynu urzędu certyfikacji. Korzystałem z polecenia curl, w którym bezpośrednio określałem katalog urzędu certyfikacji.
curl --cacert /etc/test/server.pem --capath /etc/test ...
To polecenie kończyło się niepowodzeniem za każdym razem z zawijaniem: (60) Problem z certyfikatem SSL: nie można uzyskać lokalnego certyfikatu wystawcy.Po użyciu
strace curl ...
ustalono, że curl szukał pliku certyfikatu głównego o nazwie 60ff2731.0, który jest oparty na konwertowaniu nazw mieszania openssl. Znalazłem więc to polecenie, aby skutecznie zaimportować poprawnie certyfikat główny:który tworzy softlink
curl, pod przykrywkami, przeczytał certyfikat server.pem, ustalił nazwę głównego pliku certyfikatu (rootcert.pem), przekonwertował go na nazwę skrótu, a następnie przeszukał plik systemu operacyjnego, ale nie mógł go znaleźć.
Tak więc, na wynos, użyj strace podczas uruchamiania zwijania, gdy błąd zwijania jest niejasny (była to ogromna pomoc), a następnie upewnij się, że poprawnie zainstalowałeś certyfikat główny przy użyciu konwencji nazewnictwa openssl.
źródło
Najprawdopodobniej brakuje certyfikatu z serwera.
Root-> Intermediate-> Server
Serwer powinien wysłać przynajmniej serwer i serwer pośredni.
Służy
openssl s_client -showcerts -starttls ftp -crlf -connect abc:21
do debugowania problemu.Jeśli zostanie zwrócony tylko jeden certyfikat (samopodpisany lub wydany), musisz wybrać:
curl -k
(bardzo zły pomysł)Jeśli serwer zwrócił więcej niż jeden, ale nie zawiera certyfikatu z podpisem własnym (root):
Jeśli serwer zwrócił certyfikat głównego urzędu certyfikacji, oznacza to, że nie ma go w magazynie urzędu certyfikacji, masz następujące opcje:
Zignorowałem wygasłe / odwołane certyfikaty, ponieważ nie było żadnych wiadomości o tym informujących. Ale możesz sprawdzić certyfikaty za pomocą
openssl x509 -text
Biorąc pod uwagę, że łączysz się z edycją domową ( https://www.cerberusftp.com/support/help/installing-a-certificate/ ) serwer ftp, powiem, że jest to samopodpisany.
Proszę zamieścić więcej szczegółów, takich jak dane wyjściowe z openssl.
źródło
Zgodnie z dokumentacją cURL możesz również przekazać certyfikat do
curl
polecenia:Na przykład:
źródło
Wystarczy zaktualizować listę certyfikatów
źródło
Spróbuj ponownie zainstalować curl w Ubuntu i zaktualizuj moje certyfikaty CA, dzięki
sudo update-ca-certificates --fresh
którym zaktualizowałem certyfikatyźródło
W systemie Windows miałem ten problem. Curl został zainstalowany przez mysysgit, więc pobranie i zainstalowanie najnowszej wersji rozwiązało mój problem.
W przeciwnym razie są to przyzwoite instrukcje, jak zaktualizować certyfikat CA, który możesz wypróbować.
źródło
Tak, musisz również dodać certyfikat CA. Dodanie fragmentu kodu w Node.js w celu uzyskania wyraźnego widoku.
źródło
Zetknąłem się również z tym problemem. Przeczytałem ten wątek i większość odpowiedzi ma charakter informacyjny, ale jest dla mnie zbyt skomplikowana. Nie mam doświadczenia w tematach sieciowych, więc ta odpowiedź jest dla osób takich jak ja.
W moim przypadku ten błąd występował, ponieważ nie uwzględniłem certyfikatów pośrednich i głównych obok certyfikatu, którego używałem w mojej aplikacji.
Oto, co otrzymałem od dostawcy certyfikatu SSL:
W
abc.crt
pliku był tylko jeden certyfikat:Gdybym dostarczył go w tym formacie, przeglądarka nie pokazywałaby żadnych błędów (Firefox), ale dostałbym
curl: (60) SSL certificate : unable to get local issuer certificate
błąd, kiedy wysłałem prośbę o zwijanie.Aby naprawić ten błąd, sprawdź
abc-bunde.crt
plik. Najprawdopodobniej zobaczysz coś takiego:Są to Twoje certyfikaty pośrednie i główne. Wystąpił błąd, ponieważ brakuje go w certyfikacie SSL dostarczanym do aplikacji.
Aby naprawić błąd, połącz zawartość obu tych plików w tym formacie:
Zauważ, że nie ma spacji między certyfikatami, na końcu lub na początku pliku. Po dostarczeniu tego połączonego certyfikatu do aplikacji problem powinien zostać rozwiązany.
źródło
W systemie Windows - jeśli uruchamiasz z cmd
Pobierz cacert.pem z https://curl.haxx.se/docs/caextract.html
Ustaw zmienną środowiskową:
i przeładuj środowisko
Teraz spróbuj ponownie
Powód problemu: https://laracasts.com/discuss/channels/general-discussion/curl-error-60-ssl-certificate-problem-unable-to-get-local-issuer-certificate/replies/95548
źródło
Moja sprawa była inna. Prowadzę witrynę za zaporą ogniową. Błąd został spowodowany przez pfSense.
Dzięki tej odpowiedzi przypadkowo znalazłem przyczynę .
Wszystko jest w porządku, kiedy uzyskuję dostęp do mojej witryny z sieci WAN.
Jednak gdy strona była dostępna z sieci LAN (np. Gdy Wordpress wysłał
curl
żądanie do własnego serwera, pomimo używania adresu IP WAN49.x.x.x
), wyświetlono stronę logowania do pfSense.Zidentyfikowałem certyfikat jako
pfSense webConfigurator Self-Signed Certificate
. Nic dziwnego, żecurl
rzucił błąd.Przyczyna: Stało się tak, że
curl
korzystał z adresu IP WAN witryny49.x.x.x
. Ale w kontekście serwera sieci WAN IP było zaporą ogniową.Debugowanie: Odkryłem, że otrzymuję certyfikat pfSense.
Rozwiązanie: na serwerze hostującym witrynę wskaż własną nazwę domeny na 127.0.0.1
Po zastosowaniu rozwiązania
curl
żądanie zostało poprawnie obsłużone przez serwer WWW i nie zostało przesłane do zapory ogniowej, która odpowiedziała wysyłając stronę logowania.źródło
To jest problem z magazynem certyfikatów ssh. Musisz pobrać prawidłowy plik pem certyfikatu z docelowej witryny CA, a następnie skompilować plik soft link, aby poinstruować ssl o zaufanym certyfikacie.
openssl x509 -hash -noout -in DigiCert_Global_Root_G3.pem
dostaniesz
dd8e9d41
buduj łącze solf z numerem skrótu i sufiksem pliku o .0 (kropka-zero)
dd8e9d41.0
Następnie spróbuj ponownie.
źródło
Pobierz https://curl.haxx.se/ca/cacert.pem
Po pobraniu przenieś ten plik na serwer Wamp.
Dla exp: D: \ wamp \ bin \ php \
Następnie dodaj następujący wiersz do pliku php.ini na dole.
curl.cainfo = "D: \ wamp \ bin \ php \ cacert.pem"
źródło
Musisz zmienić certyfikat serwera z
cert.pem
nafullchain.pem
Mam ten sam problem z Perlem HTTPS Daemon:
Zmieniłem:
SSL_cert_file => '/etc/letsencrypt/live/mydomain/cert.pem'
na:
SSL_cert_file => '/etc/letsencrypt/live/mydomain/fullchain.pem'
źródło
Do tej pory widziałem ten problem występujący w sieciach korporacyjnych z dwóch powodów, z których jeden lub oba mogą występować w twoim przypadku:
Na marginesie, nr 2 powyżej może powodować, że czujesz się nieswojo podczas skanowania rzekomo bezpiecznego ruchu TLS. To dla ciebie świat korporacyjny.
źródło
Miałem ten problem i nie został rozwiązany w nowszej wersji. / etc / certs miał root cert, przeglądarka powiedziała, że wszystko jest w porządku. Po kilku testach otrzymałem od ssllabs.com ostrzeżenie, że mój łańcuch nie jest kompletny (w rzeczywistości był to łańcuch dla starego certyfikatu, a nie nowego). Po poprawieniu łańcucha certyfikatów wszystko było w porządku, nawet przy zwijaniu.
źródło
Miałem ten problem z Digicert wszystkich CA. Utworzyłem plik digicertca.pem, który był zarówno pośredni, jak i główny wklejony razem w jeden plik.
Eorekan miał odpowiedź, ale tylko ja i ja mogłem głosować na jego odpowiedź.
źródło
Specjalnie dla
Windows
użytkowników, korzystającychcurl-7.57.0-win64-mingw
lub podobnych wersji.To trochę za późno, a istniejące odpowiedzi są poprawne. Ale nadal musiałem trochę się zmagać, aby działał na moim komputerze z systemem Windows, choć proces ten jest dość prosty. Udostępnianie procesu krok po kroku.
Ten błąd zasadniczo oznacza, że curl nie może zweryfikować certyfikatu docelowego identyfikatora URI. Jeśli ufasz wystawcy certyfikatu (CA), możesz dodać go do listy zaufanych certyfikatów.
W tym celu przejrzyj URI (np. W Chrome) i postępuj zgodnie z instrukcjami
.cer
plik i skopiuj zawartość (w tym ----- ROZPOCZNIJ CERTYFIKAT ----- i ----- KONIEC CERTYFIKAT -----)curl.exe
jest zapisany npC:\SomeFolder\curl-7.57.0-win64-mingw\bin
curl-ca-bundle.crt
plik za pomocą edytora tekstuTeraz twoje polecenie powinno działać poprawnie w zawijaniu.
źródło
może ci to pomóc w żłobie:
testowany na guzzle / guzzle 3. *
źródło
Proste rozwiązanie: IN
~/.sdkman/etc/config
, zmianasdkman_insecure_ssl=true
Kroki: zmiana
nano, aby zapisać i wyjść
~/.sdkman/etc/config
sdkman_insecure_ssl=false
sdkman_insecure_ssl=true
źródło