Создание мультидоменного self-signed сертификата

Для чего это нужно?

Предположим, мы хотим организовать свой почтовый сервер. Для этого нам необходимо сделать сертификаты для postfix и dovecot (в общем случае, самоподписанные, хотя сейчас можно найти CA, которые сделают вам SSL-сертификат бесплатно). В общем случае, сертификат будет соответствовать одному доменному имени (например, nixman.info), и при попытке привязки к другому FQDN мы получим ошибку.

Что делать?

Все довольно просто
Шаг 1. Редактируем файл настроек ssl. В Debian это, обычно, /etc/ssl/openssl.cnf.

[ alt_names ]
DNS.1 = nixman.info
DNS.2 = *.nixman.info

[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names


Шаг 2. Генерируем CA (если еще нет) и нужное нам количество сертификатов по обычной схеме
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -key rootCA.key -days 10000 -out /etc/ssl/certs/rootCA.crt

openssl genrsa -out postfix.key 2048
openssl req -new -key postfix.key -out postfix.csr -config /etc/ssl/openssl.cnf
openssl x509 -req -in postfix.csr -CA /etc/ssl/certs/rootCA.crt -CAkey rootCA.key -CAcreateserial -out /etc/ssl/certs/postfix.crt -days 5000

Шаг 3. Сертификаты помещаем в /etc/ssl/certs, ключи в /etc/ssl/private
mv postfix.key /etc/ssl/private/
mv rootCA.key /etc/ssl/private/
chmod o= /etc/ssl/private/postfix.key
chmod o= /etc/ssl/private/rootCA.key

PROFIT!

Теперь сгенерированный сертификат можно использовать, например, для apache/nginx, почты и везде, где требуется шифрование трафика.

Leave a Reply