Для чего это нужно?
Предположим, мы хотим организовать свой почтовый сервер. Для этого нам необходимо сделать сертификаты для postfix и dovecot (в общем случае, самоподписанные, хотя сейчас можно найти CA, которые сделают вам SSL-сертификат бесплатно). В общем случае, сертификат будет соответствовать одному доменному имени (например, nixman.info), и при попытке привязки к другому FQDN мы получим ошибку.
Что делать?
Все довольно просто
Шаг 1. Редактируем файл настроек ssl. В Debian это, обычно, /etc/ssl/openssl.cnf.
1 2 3 4 5 6 7 8 9 | [ 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 (если еще нет) и нужное нам количество сертификатов по обычной схеме
1 2 | openssl genrsa -out rootCA.key 2048 openssl req -x509 -new -key rootCA.key -days 10000 -out /etc/ssl/certs/rootCA.crt |
1 2 3 | 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
1 2 3 4 | 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, почты и везде, где требуется шифрование трафика.