Перевірка OCSP - неможливо отримати сертифікат місцевого емітента


17

Я новачок у налаштуванні SSL з нуля і зробив свої перші кроки. Я купив SSL-серт у RapidSSL для свого домену і дотримувався кроків із встановлення cert. Загалом cert є дійсним і працює на моєму веб-сервері (nginx v1.4.6 - Ubuntu 14.04.1 LTS), але якщо я намагаюся активувати OCSP OCSP, я отримую наступну помилку в моєму nginx error.log:

OCSP_basic_verify () не вдалося (SSL: помилка: 27069065: підпрограми OCSP: OCSP_basic_verify: помилка перевірки сертифікату: помилка перевірки: не в змозі отримати сертифікат місцевого емітента) під час запиту статусу сертифіката, відповідь: gv.symcd.com

Я спробував це також із цією командою з командного рядка:

openssl s_client-підключити mydomain.tld: 443 2> & 1 </ dev / null

І отримала "ту саму" помилку, як у моєму error.log:

[...] SSL-сесія: протокол: TLSv1.2 Шифр: ECDHE-RSA-AES256-GCM-SHA384 [...] Час початку: 1411583991 Час очікування: 300 (сек) Перевірте код повернення: 20 (не вдається отримати локальний сертифікат емітента)

Але якщо завантажити GeoTrust Root Certificat і спробувати це за допомогою цієї команди:

openssl s_client-підключити mydomain.tld: 443 -CAfile GeoTrust_Global_CA.pem 2> & 1 </ dev / null

Підтвердження нормально:

[...] Сесія SSL: Протокол: TLSv1.2 Шифр: ECDHE-RSA-AES256-GCM-SHA384 [...] Час початку: 1411583262 Час очікування: 300 (сек) Перевірте код повернення: 0 (нормально)

Отже, чомусь GeoTrust Root Cert не знайдений / доставлений.

Конфігурація мого сайту 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 написав у своїй документації, що я повинен додати наступні сертифікати до ssl.crt у такому порядку:

  1. myserver.crt
  2. Проміжний пакет CA (RapidSSL SHA256 CA - G3)
  3. Проміжний пакет CA (GeoTrust Global CA)

Так я і зробив ...

Зараз я не маю уявлення, що я роблю не так ... сподіваюся, хтось тут може мені допомогти.

Дякую!

Відповіді:


17

Ці дві помилки не пов'язані між собою, хоча повідомлення про помилку було однаковим.

[...] SSL-сесія: протокол: TLSv1.2 Шифр: ECDHE-RSA-AES256-GCM-SHA384 [...] Час початку: 1411583991 Час очікування: 300 (сек) Перевірте код повернення: 20 (не вдається отримати локальний сертифікат емітента)

Вище помилка була видана команда openssl_client . Як пояснив Флоріан Хейгл, ви отримуєте цю помилку, оскільки opensl_client потребує корінь Globalsign Root /etc/ssl/certs.


OCSP_basic_verify () не вдалося (SSL: помилка: 27069065: підпрограми OCSP: OCSP_basic_verify: помилка перевірки сертифікату: помилка перевірки: не в змозі отримати сертифікат місцевого емітента) під час запиту статусу сертифіката, відповідь: gv.symcd.com

Для цієї помилки він був виданий програмою nginx ocsp , особливо коли ви додаєте ssl_stapling_verify on;рядок у nginx.conf.

Ось деякі витяги з документації по ssl_stapling_verifyпояснити , чому він кидає помилку

Синтаксис: ssl_stapling_verify on | вимкнено;

Вмикає або вимикає перевірку відповідей OCSP сервером.

Щоб перевірка працювала, сертифікат емітента серверного сертифіката, кореневий сертифікат та всі проміжні сертифікати повинні бути налаштовані як довірені за допомогою директиви ssl_trusted_certificate.

Іншими словами, вам потрібно надати (2) проміжний пакет CA (RapidSSL SHA256 CA - G3) та (3) проміжний пакет CA (GeoTrust Global CA) до ssl_trusted_certificateдирективи.

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

і додати ocsp-chain.crtдо ssl_trusted_certificateдирективи.


Дуже дякую! Я також спробував це, але завжди перевіряв це командою cli.
капале

Де ми беремо проміжні серти?
інго

1

Я можу відповісти лише на частину цього.

openssl s_client-підключити mydomain.tld: 443 2> & 1 </ dev / null

знадобиться корінь Globalsign Root в / etc / ssl / certs. Є пакет сертифікатів ca, у вас це встановлено?


Я не розумію, навіщо використовувати Globalsign Root cert при роботі з RapidSSL та GeoTrust ?? вони відрізняються від Globalsign ... виправте мене, якщо я помилявся!
Цифровий сайт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.