Validasi OCSP - tidak bisa mendapatkan sertifikat penerbit lokal

17

Saya baru mengatur SSL dari awal dan melakukan langkah pertama saya. Saya membeli sertifikat SSL dari RapidSSL untuk domain saya dan mengikuti langkah-langkah di sana untuk menginstal sertifikat tersebut. Secara umum, sertifikat itu valid dan berfungsi di server web saya (nginx v1.4.6 - Ubuntu 14.04.1 LTS), tetapi jika saya mencoba mengaktifkan OCSP OCSP saya mendapatkan kesalahan berikut di nginx error.log saya:

OCSP_basic_verify () gagal (SSL: error: 27069065: rutinitas OCSP: OCSP_basic_verify: kesalahan verifikasi sertifikat: Kesalahan verifikasi: tidak bisa mendapatkan sertifikat penerbit lokal) ketika meminta status sertifikat, responden: gv.symcd.com

Saya mencobanya juga dengan perintah ini dari baris perintah:

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

Dan mendapat kesalahan "sama" seperti di error.log saya:

[...] SSL-Sesi: Protokol: TLSv1.2 Cipher: ECDHE-RSA-AES256-GCM-SHA384 [...] Waktu Mulai: 1411583991 Batas Waktu: 300 (dtk) Verifikasi kode pengembalian: 20 (tidak dapat mendapatkan lokal sertifikat penerbit)

Tetapi jika mengunduh GeoTrust Root Certificat dan coba dengan perintah ini:

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

Verifikasi ok:

[...] SSL-Sesi: Protokol: TLSv1.2 Cipher: ECDHE-RSA-AES256-GCM-SHA384 [...] Waktu Mulai: 1411583262 Batas waktu: 300 (dtk) Verifikasi kode pengembalian: 0 (ok)

Jadi, entah bagaimana, GeoTrust Root Cert tidak ditemukan / dikirim.

Konfigurasi situs nginx saya:

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 menulis dalam dokumentasinya bahwa saya harus menambahkan sertifikat berikut ke ssl.crt dengan urutan sebagai berikut:

  1. myserver.crt
  2. Bundel CA Menengah (RapidSSL SHA256 CA - G3)
  3. Bundel CA Menengah (GeoTrust Global CA)

Jadi saya lakukan ...

Saat ini saya tidak tahu apa yang saya lakukan salah ... semoga siapa pun di sini dapat membantu saya.

Terima kasih!

kapale
sumber

Jawaban:

17

Kedua kesalahan itu tidak berhubungan meskipun pesan kesalahannya sama.

[...] SSL-Sesi: Protokol: TLSv1.2 Cipher: ECDHE-RSA-AES256-GCM-SHA384 [...] Waktu Mulai: 1411583991 Batas Waktu: 300 (dtk) Verifikasi kode pengembalian: 20 (tidak dapat mendapatkan lokal sertifikat penerbit)

Kesalahan di atas dikeluarkan perintah openssl_client . Seperti yang dijelaskan oleh Florian Heigl, Anda mendapatkan kesalahan ini karena openssl_client memerlukan sertifikat Globalsign Root di /etc/ssl/certs.


OCSP_basic_verify () gagal (SSL: error: 27069065: rutinitas OCSP: OCSP_basic_verify: kesalahan verifikasi sertifikat: Kesalahan verifikasi: tidak bisa mendapatkan sertifikat penerbit lokal) ketika meminta status sertifikat, responden: gv.symcd.com

Untuk kesalahan ini, ini dikeluarkan oleh nginx ocsp rutin , terutama ketika Anda menambahkan ssl_stapling_verify on;baris di nginx.conf.

Di sini beberapa kutipan dari dokumentasi dari ssl_stapling_verifyuntuk menjelaskan mengapa itu melempar kesalahan

Sintaks: ssl_stapling_verify pada | mati;

Mengaktifkan atau menonaktifkan verifikasi respons OCSP oleh server.

Agar verifikasi berfungsi, sertifikat penerbit sertifikat server, sertifikat root, dan semua sertifikat perantara harus dikonfigurasi karena dipercaya menggunakan arahan ssl_trusted_certificate.

Dengan kata lain, Anda perlu memberikan (2) Bundel CA Menengah (RapidSSL SHA256 CA - G3) dan (3) Bundel CA Menengah (GeoTrust Global CA) untuk ssl_trusted_certificatedirektif.

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

dan tambahkan ocsp-chain.crtke ssl_trusted_certificatedirektif.

masegaloeh
sumber
Terima kasih banyak! Saya mencoba ini juga, tetapi selalu mengujinya dengan perintah cli.
kapale
Di mana kita mendapatkan sertifikat perantara?
ingo
1

Saya hanya bisa menjawab sebagian dari ini.

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

akan membutuhkan sertifikat Root Globalsign di / etc / ssl / certs. Ada paket ca-sertifikat, apakah Anda sudah menginstalnya?

Florian Heigl
sumber
Saya tidak mengerti mengapa harus menggunakan sertifikat Globalsign Root ketika berhadapan dengan RapidSSL dan GeoTrust ?? mereka berbeda dari Globalsign ... koreksi saya jika saya salah!
Situs digital