2013-07-11 31 views
16

Skopiowałem plik PEM do/usr/local/share/ca-certificates/i uruchomiłem update-ca-certyfikaty, a ja zweryfikowaliśmy, że uzyskany certyfikat jest teraz zawarty w /etc/ssl/certs/ca-certificates.crt który jest plikiem wydrukowanym przez curl-config --ca. Sprawdziłem również, że certyfikat wydrukowany przez openssl s_client -connect example.com443 był identyczny z moim plikiem PEM. A jednak nadal otrzymuję komunikat "error: 14090086: SSL: SSL3_GET_SERVER_CERTIFICATE: certificate verify failed". Zdarza się to, nawet jeśli użyję opcji curl's --cacert, jak opisano w http://curl.haxx.se/docs/sslcerts.html, aby powiedzieć, jakiego certyfikatu użyć.Dlaczego zwijanie nie rozpoznaje samopodpisanego certyfikatu SSL?

Działa, jeśli wyłączę weryfikację certyfikatu razem z curl -k, ale nie chcę tego robić, ponieważ próbuję napisać testową wiązkę, która powinna poprawnie testować SSL.

Działa to dobrze, gdy uzyskuję dostęp do tego samego adresu URL w rysie, co zwykle narzeka, gdy występują błędy SSL. Ale nie mogę po prostu użyć Lynxa do tej uprzęży testowej, chyba że znajdę sposób na to, żeby AsyncHTTPClient Tornado używał Lynx zamiast libcurl. I wydaje się, że nie ma sensu, aby instalacja samopodpisanego certyfikatu była satysfakcjonująca dla Lynxa, ale nie dla curl.

Używam Ubuntu 12.04 LTS w Virtualboxie zasilanym przez Vagrant; ma zwijanie 7.22.0. Proxy kończące SSL to nginx/1.3.13 działające na tym samym komputerze, a nazwa domeny jest wskazywana 127.0.0.1 przez wpis w/etc/hosts.

Jakieś wskazówki dotyczące problemu? Dzięki.

Odpowiedz

14

Podczas korzystania z narzędzia cURL w celu pobrania witryny HTTPS, która nie korzysta z certyfikatu podpisanego przez ośrodek CA, występuje następujący problem.

curl https://example.selfip.com 
curl: (60) SSL certificate problem, verify that the CA cert is OK. Details: 
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed 
More details here: http://curl.haxx.se/docs/sslcerts.html 

Oczywiście można to po prostu pokonać, używając opcji -k.

Rozwiązanie:

Krok 1
Zidentyfikuj który katalog wykorzystuje instalacja OpenSSL.

[email protected]:~# openssl version -d 
OPENSSLDIR: "/usr/lib/ssl" 

Krok 2
przejdź do tego katalogu i listy zawartości katalogu. Powinieneś zobaczyć katalog o nazwie "certs".

[email protected]:~# cd /usr/lib/ssl && ls -al 

Krok 3
przejdź do tego katalogu.

[email protected]:/usr/lib/ssl# cd certs 

Wyświetl zawartość katalogu. Powinieneś zobaczyć z dowiązań symbolicznych, że certyfikaty są faktycznie przechowywane w /usr/share/ca-certificates.

Krok 4
Zmiana /usr/share/ca-certificates katalog i można dodać certyfikat z podpisem własnym tam, (ex: your.cert.name.crt)

Krok 5
Zmiana /etc katalogu i edytuj plik ca-certificates.conf.

[email protected]:# cd /etc 
[email protected]:# nano ca-certificates.conf 

Dodaj your.cert.name.crt do pliku (ca-certificates.conf) i zapisz go.

Ostatni krok:

uruchomić program update-ca-certificates –fresh. Uwaga: Przed wykonaniem polecenia można wykonać kopię zapasową /etc/ssl/certs.

[email protected]:# update-ca-certificates --fresh 
Clearing symlinks in /etc/ssl/certs...done. 
Updating certificates in /etc/ssl/certs....done. 
Running hooks in /etc/ca-certificates/update.d....done. 

Test z zawinięciem na docelowej stronie HTTPS i powinien teraz działać.

Source

Powiązane problemy