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

Невозможно проверить первый сертификат (Comodo EssentialSSL Wildcard)

Я новичок в настройке SSL-сертификатов и работе с серверами в целом, поэтому, пожалуйста, терпите меня, пока я пытаюсь объяснить ситуацию, в которой я оказался.

Недавно я приобрел лицензию Comodo EssentialSSL Wildcard, которая будет использоваться для защиты моего сервера. Конфигурируемый мной сервер предназначен для использования с Kolab. Kolab работает, но SSL не настроен, поэтому я решил, что могу это настроить. Я выполнил инструкции, представленные на соответствующей странице с практическими рекомендациями Kolab (https://docs.kolab.org/howtos/secure-kolab-server.html), но застрял в разделе, где вы настраивали cyrus-IMAP сервер.

При беге:

openssl s_client -showcerts -connect example.org:993

Я получаю следующий результат (усеченный):

CONNECTED(00000003)
depth=0 OU = Domain Control Validated, OU = EssentialSSL Wildcard, CN = *.example.org
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 OU = Domain Control Validated, OU = EssentialSSL Wildcard, CN = *.example.org
verify error:num=27:certificate not trusted
verify return:1
depth=0 OU = Domain Control Validated, OU = EssentialSSL Wildcard, CN = *.example.org
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
 0 s:/OU=Domain Control Validated/OU=EssentialSSL Wildcard/CN=*.example.org
   i:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Domain Validation Secure Server CA
-----BEGIN CERTIFICATE-----

...

-----END CERTIFICATE-----
---
Server certificate
subject=/OU=Domain Control Validated/OU=EssentialSSL Wildcard/CN=*.example.org
issuer=/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Domain Validation Secure Server CA
---
No client certificate CA names sent
---
SSL handshake has read 2019 bytes and written 421 bytes
---
...

    Start Time: 1502097786
    Timeout   : 300 (sec)
    Verify return code: 21 (unable to verify the first certificate)
---
* OK [CAPABILITY IMAP4rev1 LITERAL+ ID ENABLE AUTH=PLAIN AUTH=LOGIN SASL-IR] example.org Cyrus IMAP git2.5+0-Debian-2.5~dev2015021301-0~kolab2 server ready

Если я укажу -CApath для сертификатов, он, тем не менее, будет работать, и я получу проверочный код возврата: 0 (ok), но только если я запустил команду, войдя на сервер через ssh. При настройке моей почты на thunderbird я могу получить доступ к своему почтовому ящику, но сначала должен добавить исключение безопасности, потому что сертификат имеет «Неизвестное удостоверение». Однако сертификат безупречно работает на порте 443 для https без указания -CApath.

Любая помощь будет принята с благодарностью.

Я решил проблему, проверив, что порядок моего промежуточного файла пакета был правильно отформатирован, и изменил его с .ca-bundle на .pem и добавил следующую строку в мой imapd.conf:

tls_ca_path: /etc/ssl/certs

Если вы получили следующую ошибку во время openssl s_client -showcerts -connect example.com:443:

ошибка проверки: число = 20: невозможно получить сертификат местного эмитента

Убедитесь, что вы включили Пакет CA сертификаты.

Когда Comodo CA выдает сертификат SSL, он отправляет определенный пакет промежуточных сертификатов Comodo CA для установки вместе с ним. Эти сертификаты создают так называемую цепочку сертификатов. Сертификат конечного пользователя был подписан с использованием одного из промежуточных звеньев, который был подписан с использованием одного из корневых сертификатов. Когда браузер попадает на веб-сайт, он пытается построить цепочку сертификатов и связать предоставленный сертификат SSL с одним из корневых источников в своем хранилище доверенных сертификатов.

Убедитесь, что вы скачали эти файлы у поставщика сертификатов.

Самый удобный способ (особенно для Nginx) состоит в том, чтобы объединить их все в один, например, добавив CA Bundle в основной CRT:

$ cat STAR_example_com.ca-bundle > STAR_example_com.crt

Если у вас нет ни одного .ca-bundle файл (CA Bundle), но несколько файлов, объедините их все в один.

Затем установите STAR_example_com.crt по-прежнему. Пример для Nginx:

ssl_certificate /etc/nginx/ssl/STAR_example_com.crt;
ssl_certificate_key /etc/nginx/ssl/STAR_example_com.key;