Приложение A. Пример настройки аутентификации по сертификату.

Содержание

Настройка шифрованного соединения с сервером.
Сертификат Центра Сертификации (CA) и сертификат сервера.
Установка сертификата сервера.
Настройка аутентификации клиента по сертификату.
Конфигурация сервера и настройка учётной записи клиента.
Приватный ключ и сертификат клиента.
Установка приватного ключа и сертификата клиента.
Отзыв сертификатов.

Здесь будет продемонстрирована настройка шифрованного соединения с сервером, аутентификация пользователя предоставляющего клиентский сертификат и отзыв клиентского сертификата. Пример приведён для протокола 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 в клиентском ПО.

Сертификат Центра Сертификации (CA) и сертификат сервера.

Нам понадобятся файлы: пустой 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. С этого момента после подключения к серверу будет устанавливаться шифрованное соединение.