Содержание
Здесь будет продемонстрирована настройка шифрованного соединения с
сервером, аутентификация пользователя предоставляющего клиентский
сертификат и отзыв клиентского сертификата. Пример приведён для протокола
IMAP4, для других протоколов
конфигурация будет аналогична, либо те же (некоторые) параметры
конфигурации можно задавать глобально для всех протоколов.
Показанные далее действия с сертификатами носят демонстрационный характер. Подробное описание работы непосредственно с сертификатами выходит за рамки данного руководства.
Предполагается что пользователь использует ПО Mozilla
Thunderbird, настроен почтовый домен example.domain в котором зарегистрировано
имя пользователя u1. Имя сервера
- mail.example.domain.
Пользователь использует для аутентификации полное имя
u1@example.domain, успешно
получает почту по протоколу IMAP4 соединяясь с сервером по доменному
имени mail.example.domain. В
нашем примере будет создан самоподписанный сертификат Центра Сертификации
(CA), им же будут подписываться сертификат сервера
и клиентские сертификаты. Для работы с приватными ключами и сертификатами
потребуется утилита OpenSSL которая должна быть установлена на
сервере.
Создадим директорию для хранения всех необходимых файлов. Например,
C:\Manjary\cert. Далее
предполагается что эта директория текущая и все команды openssl
выполняются в ней.
Прежде чем перейти к аутентификации пользователей по сертификату, необходимо иметь поддержку TLS на сервере и включить использование TLS на стороне клиента. Сначала мы создадим сертификат сервера, затем установим его для Manjary и включим использование STARTTLS в клиентском ПО.
Нам понадобятся файлы: пустой certindex,
файлы certserial и crlnumber
с одинаковым содержанием - строкой "01". Создадим их из командной
строки:
touch certindex echo 01 > certserial echo 01 > crlnumber
Если используется Windows и утилита touch не установлена,
для создания пустого файла certindex можно
использовать Блокнот.
Создадим текстовый файл ca.conf с таким
содержимым:
[ca] default_ca = myca [crl_ext] authorityKeyIdentifier=keyid:always [myca] dir = ./ new_certs_dir = $dir unique_subject = no certificate = $dir/ca-crt.pem database = $dir/certindex private_key = $dir/ca-key.pem serial = $dir/certserial default_days = 730 default_md = sha1 policy = myca_policy crlnumber = $dir/crlnumber default_crl_days = 730 [myca_policy] commonName = supplied stateOrProvinceName = optional countryName = optional emailAddress = optional organizationName = optional organizationalUnitName = optional
С помощью утилиты openssl создадим приватный ключ и самоподписанный сертификат Центра Сертификации (CA). Для этого в командной строке выполните следующее:
openssl genrsa -out ca-key.pem 2048 openssl req -new -x509 -days 365 -key ca-key.pem -out ca-crt.pem -subj "/CN=Example CA"
В результате будут созданы файлы: приватный ключ
ca-key.pem и сертификат Центра Сертификации
ca-crt.pem.
Далее, создадим приватный ключ для сервера и запрос на выпуск сертификата сервера подписанного полученным ранее сертификатом Центра Сертификации:
openssl genrsa -out srv-key.pem 2048 openssl req -new -key srv-key.pem -out srv.csr -subj "/CN=mail.example.domain"
Полученные файлы: приватный ключ сервера
srv-key.pem, запрос на выпуск сертификата
srv.csr. Выпустим сертификат сервера:
openssl x509 -req -in srv.csr -CA ca-crt.pem -CAkey ca-key.pem -CAcreateserial -out srv-crt.pem -days 365 -sha256
Мы получили серверный сертификат
srv-crt.pem. Файл запроса
srv.csr больше не потребуется, теперь его можно
удалить.
Приватный ключ и сертификат сервера необходимо указать в
конфигурации Manjary. Т.к. в нашем примере
рассматривается настройка сервера IMAP4, следующие узлы конфигурации записываются как дочерние
для узла module-IMAP4:
<SSL-key-file>C:\Manjary\cert\srv-key.pem</SSL-key-file> <SSL-certificate-file>C:\Manjary\cert\srv-crt.pem</SSL-certificate-file>
После внесения изменений в конфигурацию необходимо дать сигнал серверу для чтения новой конфигурации:
manjary -k reconfig
Проверьте лог-файл на наличие сообщений об ошибках. После этого
сервер готов устанавливать шифрованные соединения с клиентами. Однако,
т.к. для подписи сертификата сервера мы использовали самоподписанный
сертификат CA, клиенты не будут доверять нашему серверному
сертификату. Для устранения этой проблемы необходимо установить наш
корневой сертификат CA на стороне клиента. Для этого в настройках
Mozilla Thunderbird зайдите в список
"Центры Сертификации" и импортируйте созданный на первом этапе
сертификат из файла ca-crt.pem.
Теперь можно перейти в параметры учётной записи Mozilla Thunderbird и выбрать: Защита соединения: STARTTLS. С этого момента после подключения к серверу будет устанавливаться шифрованное соединение.