После изменения сертификата для моего экземпляра cyrus я получаю следующее предупреждение всякий раз, когда подписываюсь с помощью cyradm:
cyradm --user cyrus --authz cyrus localhost
verify error:num=19:self signed certificate in certificate chain
что является ошибкой OpenSSL, которая также появляется при подключении к серверу с openssl s_client -connect FQDN
(Я заменил свое имя субъекта / сертификата на полное доменное имя и пропустил блок сертификата для публикации):
CONNECTED(00000003)
depth=2 /C=US/ST=UT/L=Salt Lake City/O=The USERTRUST Network/OU=http://www.usertrust.com/CN=UTN-USERFirst-Hardware
verify error:num=19:self signed certificate in certificate chain
verify return:0
---
Certificate chain
0 s:/OU=Domain Control Validated/CN=FQDN
i:/C=NL/O=TERENA/CN=TERENA SSL CA
1 s:/C=NL/O=TERENA/CN=TERENA SSL CA
i:/C=US/ST=UT/L=Salt Lake City/O=The USERTRUST Network/OU=http://www.usertrust.com/CN=UTN-USERFirst-Hardware
2 s:/C=US/ST=UT/L=Salt Lake City/O=The USERTRUST Network/OU=http://www.usertrust.com/CN=UTN-USERFirst-Hardware
i:/C=US/ST=UT/L=Salt Lake City/O=The USERTRUST Network/OU=http://www.usertrust.com/CN=UTN-USERFirst-Hardware
---
Server certificate
-----BEGIN CERTIFICATE-----
(omitted)
-----END CERTIFICATE-----
subject=/OU=Domain Control Validated/CN=FQDN
issuer=/C=NL/O=TERENA/CN=TERENA SSL CA
---
No client certificate CA names sent
---
SSL handshake has read 4171 bytes and written 328 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1
Cipher : DHE-RSA-AES256-SHA
Session-ID: 88FC7D094D2B0A0EAD11ADBAB0F4605CFF8B72DA0079C3C6E47939018C4CA3D4
Session-ID-ctx:
Master-Key: A88EF226C587C6F9AE43EC7D04D6BC462E657ED851B6FC336940898A57C31E55BCFFACDFFEDBAFB3C65A024F27EB1006
Key-Arg : None
Start Time: 1431561482
Timeout : 300 (sec)
Verify return code: 0 (ok)
---
* OK [CAPABILITY IMAP4rev1 LITERAL+ ID ENABLE AUTH=LOGIN AUTH=PLAIN SASL-IR] FQDN Cyrus IMAP v2.4.12-Debian-2.4.12-2 server ready
Это из моего /etc/imapd.conf
:
tls_ca_path: /etc/ssl/certs
tls_ca_file: /etc/ssl/certs/TERENA_SSL_CA.pem
tls_cert_file: /etc/ssl/certs/mail.pem
tls_key_file: /etc/ssl/private/mail.key
Я получил сертификат TERENA CA от https://www.terena.org/activities/tcs/repository/, Раздел «Сертификаты TCS CA (SHA1) / TERENA SSL CA (PEM)». Проверка файла с помощью less
показывает, что в файле есть только один сертификат, поэтому это не может быть причиной включения корневого сертификата. Рассматриваемый корневой сертификат "UTN_USERFirst_Hardware_Root_CA.pem" является частью ca-certificates
пакет, который установлен на сервере.
Я понятия не имею, почему Сайрус настаивает на доставке корневого сертификата цепочки, а затем жалуется на это.
Обновление 1:
ls -lah /etc/ssl/certs/cyrus*
ничего не делает, такой папки нет.openssl x509 -in /etc/ssl/certs/cyrus-imapd-ca.pem -noout -text |grep Issuer
, с путем к моему сертификату:
Issuer: C=NL, O=TERENA, CN=TERENA SSL CA
CA Issuers - URI:http://crt.tcs.terena.org/TERENASSLCA.crt
Вероятно, сообщение об ошибке вводит в заблуждение - я тоже получаю эту ошибку, так как изменил servername
установка в imapd.conf
(Debian 8.2 / стабильный).
Я установил два двойных сервера, std install, используя промежуточный сертификат от RapidSSL. Оба запускают cyrus-imapd с абсолютно идентичной настройкой (я сравнил файлы конфигурации с diff
Чтобы убедиться). Просто б / с я педантичен, поменял servername
в imapd.conf
к одному и тому же CNAME на обоих серверах - один является главным, другой должен стать сервером-репликой для переключения при отказе, отсюда то же имя. Это, конечно же, изменяет область AUTH SASL. Пока на srv1
Я получаю ошибку 19, которую вы наблюдали также при использовании cyrus
uid со стандартной областью (простое имя хоста), на srv2
Я получаю еще одну ошибку (с идентичной настройкой, но с другим каноническим доменным именем), а именно эту:
Login failed: authentication failure at /usr/lib/x86_64-linux-gnu/perl5/5.20/Cyrus/IMAP/Admin.pm line 120.
Забавно, правда? Если я раскомментирую servername
в imapd.conf
на первом или втором сервере все работает без ошибок. Мое решение заключалось в том, чтобы добавить пользователя cyrus SASL с областью servername
и снова все работает нормально. Ошибка "самоподписанный сертификат" исчезла.
Прочитав ваш вопрос, я провел еще несколько тестов: Если я установил tls_ca_path: /tmp/
и tls_ca_file:
только для промежуточного сертификата, Cyrus по-прежнему выводит связанный корневой сертификат CA. НО: это не вызывает эту ошибку при раскомментировании servername
или при добавлении пользователя SASL cyrus
с той же сферой, что и servername
.
Довольно странно. Поскольку Cyrus все равно выводит сертификат корневого CA, я уверен, что это не причина этого сообщения об ошибке. Я не получаю его ни на втором сервере, ни на мастере с правильной настройкой области SASL! В моем случае это был неправильный мир, ваш пробег может отличаться. Таким образом, сообщение err 19 никоим образом не связано с сертификатом корневого CA.
Надеюсь, это поможет, lbc (еще один ненавистник Perl :-)