Я новичок в настройке 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;