Назад | Перейти на главную страницу

Проверка OCSP - невозможно получить сертификат местного эмитента

Я новичок в настройке SSL с нуля и сделал свои первые шаги. Я купил сертификат SSL в RapidSSL для своего домена и выполнил шаги по его установке. В целом сертификат действителен и работает на моем веб-сервере (nginx v1.4.6 - Ubuntu 14.04.1 LTS), но если я пытаюсь активировать OCSP OCSP, я получаю следующую ошибку в моем журнале ошибок nginx:

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

Я пробовал это также с помощью этой команды из командной строки:

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

И получил "ту же" ошибку, что и в моем error.log:

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

Но если скачать корневой сертификат GeoTrust и попробовать его с помощью этой команды:

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

Проверка в порядке:

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

Итак, каким-то образом корневой сертификат GeoTrust не найден / не доставлен.

Конфигурация моего сайта 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)

Так я и сделал...

Прямо сейчас я понятия не имею, что делаю не так ... надеюсь, кто-нибудь здесь сможет мне помочь.

Спасибо!

Эти две ошибки не связаны между собой, хотя сообщение об ошибке было таким же.

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

Выше была выдана ошибка openssl_client команда. Как объяснил Флориан Хейгл, вы получаете эту ошибку, потому что openssl_client нуждается в корневом сертификате Globalsign в /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 директива.

Я могу ответить только на часть этого.

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

потребуется корневой сертификат Globalsign в / etc / ssl / certs. Есть пакет ca-сертификатов, он у вас установлен?