Sprawdzanie poprawności OCSP - nie można uzyskać lokalnego certyfikatu wystawcy


17

Jestem nowy w konfiguracji SSL od zera i zrobiłem pierwsze kroki. Kupiłem certyfikat SSL od RapidSSL dla mojej domeny i wykonałem tam kroki, aby zainstalować certyfikat. Ogólnie certyfikat jest ważny i działa na moim serwerze internetowym (nginx v1.4.6 - Ubuntu 14.04.1 LTS), ale jeśli próbuję aktywować OCSP OCSP, pojawia się następujący błąd w moim błędzie nginx.log:

OCSP_basic_verify () nie powiodło się (SSL: błąd: 27069065: procedury OCSP: OCSP_basic_verify: błąd weryfikacji certyfikatu: błąd weryfikacji: nie można uzyskać certyfikatu lokalnego wystawcy) podczas żądania statusu certyfikatu, odpowiadający: gv.symcd.com

Próbowałem tego również z tego polecenia z wiersza poleceń:

openssl s_client -connect mydomain.tld: 443 2> & 1 </ dev / null

I dostałem „ten sam” błąd, jak w moim error.log:

[...] Sesja SSL: Protokół: TLSv1.2 Szyfr: ECDHE-RSA-AES256-GCM-SHA384 [...] Czas rozpoczęcia: 1411583991 Limit czasu: 300 (s) Sprawdź kod powrotu: 20 (nie można uzyskać lokalnego certyfikat wystawcy)

Ale jeśli pobierz GeoTrust Root Certificat i wypróbuj go za pomocą tego polecenia:

openssl s_client -connect mydomain.tld: 443 -CAfile GeoTrust_Global_CA.pem 2> i 1 </ dev / null

Weryfikacja jest w porządku:

[...] Sesja SSL: Protokół: TLSv1.2 Szyfr: ECDHE-RSA-AES256-GCM-SHA384 [...] Czas rozpoczęcia: 1411583262 Limit czasu: 300 (s) Sprawdź kod powrotu: 0 (ok)

Więc jakoś nie znaleziono / dostarczono certyfikatu głównego GeoTrust.

Konfiguracja mojej strony nginx:

server {
    listen 443;
    server_name mydomain.tld;

    ssl on;
    ssl_certificate /etc/ssl/certs/ssl.crt;
    ssl_certificate_key /etc/ssl/private/ssl.key;


    # Resumption
    ssl_session_cache shared:SSL:20m;

    # Timeout
    ssl_session_timeout 10m;

    # Security options
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;

    # OCSP Stapling
    # It means that you sent status info about your certificate along with the request,
    # instead of making the browser check the certificate with the Certificate Authority.
    # This removes a large portion of the SSL overhead, the CloudFlare post above explains it in more detail.
    ssl_stapling on;
    ssl_stapling_verify on;
    #ssl_trusted_certificate /etc/ssl/certs/ssl.pem;

    #resolver 8.8.8.8 8.8.4.4 valid=300s;
    #resolver_timeout 10s;

    # This forces every request after this one to be over HTTPS
    add_header Strict-Transport-Security "max-age=31536000";[...]};

RapidSSL napisał w swojej dokumentacji, że powinienem dodać następujące certyfikaty do pliku ssl.crt w następującej kolejności:

  1. myserver.crt
  2. Pośredni pakiet CA (RapidSSL SHA256 CA - G3)
  3. Pośredni pakiet CA (GeoTrust Global CA)

Więc zrobiłem...

W tej chwili nie mam pojęcia, co robię źle ... mam nadzieję, że ktoś tutaj może mi pomóc.

Dziękuję Ci!

Odpowiedzi:


17

Te dwa błędy nie były ze sobą powiązane, chociaż komunikat o błędzie był taki sam.

[...] Sesja SSL: Protokół: TLSv1.2 Szyfr: ECDHE-RSA-AES256-GCM-SHA384 [...] Czas rozpoczęcia: 1411583991 Limit czasu: 300 (s) Sprawdź kod powrotu: 20 (nie można uzyskać lokalnego certyfikat wystawcy)

Wystąpił powyższy błąd komenda openssl_client . Jak wyjaśnił Florian Heigl, pojawia się ten błąd, ponieważ openssl_client potrzebuje certyfikatu root Globalsign /etc/ssl/certs.


OCSP_basic_verify () nie powiodło się (SSL: błąd: 27069065: procedury OCSP: OCSP_basic_verify: błąd weryfikacji certyfikatu: błąd weryfikacji: nie można uzyskać certyfikatu lokalnego wystawcy) podczas żądania statusu certyfikatu, odpowiadający: gv.symcd.com

Z powodu tego błędu został on wydany przez procedurę nginx ocsp , szczególnie po dodaniu ssl_stapling_verify on;wiersza w pliku nginx.conf.

Tutaj jakiś fragment dokumentacji w ssl_stapling_verifycelu wyjaśnienia, dlaczego wyrzuca błąd

Składnia: ssl_stapling_verify on | poza;

Włącza lub wyłącza weryfikację odpowiedzi OCSP przez serwer.

Aby weryfikacja działała, certyfikat wystawcy certyfikatu serwera, certyfikat główny i wszystkie certyfikaty pośrednie powinny być skonfigurowane jako zaufane za pomocą dyrektywy ssl_trusted_certificate.

Innymi słowy, musisz dostarczyć (2) Pośredni pakiet CA (RapidSSL SHA256 CA - G3) i (3) Pośredni pakiet CA (GeoTrust Global CA) zgodnie z ssl_trusted_certificatedyrektywą.

cat GeoTrustGlobalCA.crt rapidsslG3.crt > ocsp-chain.crt

i dodaj ocsp-chain.crtdo ssl_trusted_certificatedyrektywy.


Dziękuję bardzo! Próbowałem tego również, ale zawsze testowałem to za pomocą polecenia cli.
kapale

Skąd otrzymujemy certyfikaty pośrednie?
ingo

1

Mogę odpowiedzieć tylko na część tego.

openssl s_client -connect mydomain.tld: 443 2> & 1 </ dev / null

będzie potrzebował certyfikatu głównego Globalsign w / etc / ssl / certs. Istnieje pakiet certyfikatów ca. Czy masz już zainstalowany?


Nie rozumiem, dlaczego stosować certyfikat Globalsign Root w kontaktach z RapidSSL i GeoTrust? różnią się od Globalsign ... poprawcie mnie, jeśli się myliłem!
Witryna cyfrowa
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.