bg-tutorials

Как установить SSL-сертификат на сервере Courier IMAP

В этом руководстве вы узнаете, как установить SSL-сертификат на сервер Courier IMAP. Вы объединяете сертификат, приватный ключ и цепочку CA в один PEM-файл, указываете на него в настройке Courier TLS_CERTFILE и перезапускаете службу, чтобы IMAPS и POP3S начали использовать новый сертификат.

Создание CSR-кода на сервере Courier IMAP

Если вы уже создали CSR и получили SSL-файлы, пропустите первую часть и переходите сразу к шагам установки.

CSR (Certificate Signing Request) — это блок закодированного текста, содержащий ваши контактные данные. Вы создаёте его и отправляете в удостоверяющий центр (CA) для прохождения проверки SSL. При создании CSR также генерируется соответствующий приватный ключ, который остаётся на вашем сервере и необходим для установки. У вас есть два варианта:

Чтобы открыть файл CSR, используйте любой текстовый редактор. При заказе сертификата скопируйте весь блок, включая строки BEGIN и END. Храните файл приватного ключа в безопасности: вам нужно будет объединить его с PEM-файлом на этапе установки.

Установка SSL-сертификата на сервер Courier IMAP

После прохождения проверки ваш CA отправит вам по электронной почте ZIP-архив с SSL-файлами: основным (серверным) сертификатом и одним или несколькими промежуточными сертификатами (CA). Извлеките архив на сервере и выполните следующие шаги.

Шаг 1: Объедините сертификат, цепочку и ключ в один PEM-файл

Courier считывает сертификат и приватный ключ из одного PEM-файла, указанного в TLS_CERTFILE. Объедините файлы в следующем порядке: сначала серверный сертификат, затем промежуточную цепочку CA, затем приватный ключ. Из каталога с извлечёнными файлами выполните:

cat yourdomain.crt yourdomain.ca-bundle yourdomain.key > imapd.pem
sudo mv imapd.pem /etc/courier/imapd.pem
sudo chmod 600 /etc/courier/imapd.pem

Если ваш CA предоставил промежуточные сертификаты в виде отдельных файлов, а не единого .ca-bundle, укажите каждый из них между сертификатом и ключом. Готовый PEM-файл должен выглядеть так:

-----BEGIN CERTIFICATE-----
(the text of your primary SSL certificate)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(the text of the intermediate / CA chain certificate)
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
(the text of your private key)
-----END PRIVATE KEY-----

Более старые ключи могут иметь метку BEGIN RSA PRIVATE KEY вместо BEGIN PRIVATE KEY — оба варианта допустимы. Ключ не должен быть зашифрован парольной фразой, так как Courier загружает его без запроса пароля. PEM-файл должен быть доступен для чтения только root-пользователю (команда chmod 600 выше), поскольку он содержит приватный ключ.

Если вы предпочитаете хранить приватный ключ в отдельном файле, не включайте ключ в PEM-файл и укажите путь к ключу в параметре TLS_PRIVATE_KEYFILE в конфигурации (Шаг 2). Если ключ уже встроен в TLS_CERTFILE, отдельный файл ключа не является обязательным.

Шаг 2: Укажите Courier путь к вашему PEM-файлу

Откройте конфигурационный файл, который Courier использует для IMAP через SSL. Путь зависит от вашего дистрибутива: обычно это /etc/courier/imapd-ssl, а в некоторых системах — /usr/lib/courier-imap/etc/imapd-ssl. Отредактируйте его с помощью текстового редактора, например:

sudo nano /etc/courier/imapd-ssl

Найдите строку TLS_CERTFILE (или добавьте её, если она отсутствует) и укажите путь к вашему PEM-файлу:

TLS_CERTFILE=/etc/courier/imapd.pem

Если вы оставили приватный ключ в отдельном файле на Шаге 1, также укажите путь к нему:

TLS_PRIVATE_KEYFILE=/etc/courier/imapd.key

Пока вы находитесь в этом файле, усилите настройки TLS. Удалите или закомментируйте любую строку, принудительно задающую устаревший протокол, например TLS_PROTOCOL=SSL3: SSLv3 и ранние версии TLS 1.0 и 1.1 небезопасны и должны быть отключены. Настройте Courier на требование TLS 1.2 или выше. Параметр TLS_PROTOCOL применяется к выделенному SSL-порту (IMAPS), а TLS_STARTTLS_PROTOCOL применяется к STARTTLS на стандартном порту:

TLS_PROTOCOL=TLSv1.2
TLS_STARTTLS_PROTOCOL=TLSv1.2

Значение TLSv1.2 означает «TLS 1.2 или выше», поэтому TLS 1.3 всё равно будет использоваться при согласовании, если ваша сборка OpenSSL это поддерживает. Вам не нужно устанавливать TLS_TRUSTCERTS, чтобы предоставлять сертификат почтовым клиентам — эта переменная используется только для проверки клиентских сертификатов.

Debian, Ubuntu и Devuan: в этих дистрибутивах Courier собран на основе GnuTLS, а не OpenSSL, и параметр TLS_PROTOCOL не действует. Вместо этого задайте минимальный протокол с помощью TLS_PRIORITY, например TLS_PRIORITY=NORMAL:-VERS-TLS1.0:-VERS-TLS1.1 (при этом остаются только TLS 1.2 и 1.3). Параметр TLS_CERTFILE и объединённый PEM-файл, описанный выше, одинаковы для обеих сборок, поэтому сама установка сертификата не меняется.

Примечание о параметрах Diffie-Hellman: современные пакеты Courier автоматически создают файл параметров DH (с помощью сценария mkdhparams и периодической задачи cron) и считывают его из TLS_DHPARAMS, поэтому вручную создавать его при стандартной установке больше не нужно. Старая директива TLS_DHCERTFILE была удалена в Courier 4.15. Если mkdhparams ещё никогда не запускался на вашем сервере, запустите его один раз, чтобы создать файл.

Если вы также используете POP3S (порт 995), откройте конфигурационный файл POP3 /etc/courier/pop3d-ssl (или /usr/lib/courier-imap/etc/pop3d-ssl) и примените те же настройки. Вы можете использовать тот же PEM-файл повторно или создать отдельный /etc/courier/pop3d.pem с тем же содержимым:

TLS_CERTFILE=/etc/courier/pop3d.pem
TLS_PROTOCOL=TLSv1.2
TLS_STARTTLS_PROTOCOL=TLSv1.2

Шаг 3: Перезапустите Courier

Перезапустите Courier, чтобы он загрузил новый сертификат. В большинстве дистрибутивов на основе systemd перезапустите SSL-службы и демон аутентификации:

sudo systemctl restart courier-imap-ssl
sudo systemctl restart courier-pop3-ssl
sudo systemctl restart courier-authdaemon

В некоторых пакетах вместо этого используется единая объединённая служба. Если указанные выше службы не найдены, попробуйте:

sudo systemctl restart courier

В системе, где не используется systemd, выполните перезапуск с помощью собственных сценариев Courier:

/usr/lib/courier-imap/libexec/imapd-ssl.rc restart
/usr/lib/courier-imap/libexec/pop3d-ssl.rc restart

После успешного перезапуска службы ваш новый SSL-сертификат начинает применяться для IMAPS (порт 993) и POP3S (порт 995), а также для STARTTLS на портах 143 и 110.

Проверка установки SSL

После установки убедитесь, что сертификат передаётся корректно. В терминале откройте TLS-соединение с портом IMAPS и просмотрите сертификат, который предоставляет сервер:

openssl s_client -connect mail.yourdomain.com:993 -servername mail.yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -subject -dates

Для POP3S используйте порт 995. Чтобы вместо этого проверить STARTTLS на стандартном порту IMAP, выполните:

openssl s_client -connect mail.yourdomain.com:143 -starttls imap

Первая команда передаёт соединение через конвейер в openssl x509 и выводит эмитента, субъект (общее имя) и сроки действия, чтобы вы могли убедиться, что предоставляется нужный сертификат. Команда STARTTLS показывает полное согласование соединения: убедитесь, что эмитент и цепочка указаны верно и что ближе к концу вывода появляется строка Verify return code: 0 (ok). Для получения полного отчёта о вашем сертификате и его настройках используйте наш SSL Checker.

Часто задаваемые вопросы

В каком порядке следует объединять файлы в PEM-файле Courier?

Сначала серверный сертификат, затем промежуточная цепочка (CA), затем приватный ключ — всё в одном PEM-файле. Courier считывает этот файл из TLS_CERTFILE и предоставляет клиентам полную цепочку. Приватный ключ должен быть незашифрованным (без парольной фразы).

Где находится конфигурационный файл SSL для Courier?

IMAP через SSL настраивается в файле /etc/courier/imapd-ssl, а POP3 через SSL — в файле /etc/courier/pop3d-ssl. В некоторых дистрибутивах эти файлы находятся в /usr/lib/courier-imap/etc/. Настройки STARTTLS для незашифрованных портов находятся в соответствующих файлах imapd и pop3d.

Нужны ли мне параметры Diffie-Hellman (DH) для Courier?

Вручную — нет, для обычной установки. Современные пакеты Courier автоматически создают файл параметров DH с помощью сценария mkdhparams и обновляют его по расписанию, считывая его из TLS_DHPARAMS. Более старая директива TLS_DHCERTFILE была удалена в Courier 4.15. Запустите mkdhparams один раз только в том случае, если файл DH ещё не существует.

Как отключить SSLv3 и старые версии TLS в Courier?

Удалите любую строку TLS_PROTOCOL=SSL3 и установите TLS_PROTOCOL=TLSv1.2 в файлах imapd-ssl и pop3d-ssl. Установите TLS_STARTTLS_PROTOCOL=TLSv1.2 для портов STARTTLS. Значение TLSv1.2 означает «1.2 или выше», поэтому TLS 1.3 используется автоматически, если ваш OpenSSL это поддерживает.

Как проверить сертификат после перезапуска Courier?

Подключитесь к почтовому порту с помощью OpenSSL и просмотрите предоставляемый сертификат: openssl s_client -connect mail.yourdomain.com:993 для IMAPS, либо добавьте -starttls imap для порта 143. Убедитесь, что эмитент и цепочка указаны верно и что в выводе присутствует Verify return code: 0 (ok).

Сэкономьте 10% на SSL-сертификатах при заказе сегодня!

Быстрая выдача, надежное шифрование, 99,99% доверия к браузеру, специализированная поддержка и 25-дневная гарантия возврата денег. Код купона: SAVE10

Детальное изображение дракона в полете
Написано

Опытный автор контента, специализирующийся на SSL-сертификатах. Превращает сложные темы кибербезопасности в понятный, увлекательный контент. Вносите свой вклад в повышение уровня цифровой безопасности с помощью впечатляющих рассказов.