среда, 5 июня 2013 г.

Создание tls сертификата для postfix и courier-imap

Понадобилось по некоторым причинам сделать новые сертификаты для почтового сервера, для postfix и courier-imap. В повседневной практике это довольно редкий случай, поэтому в голове не откладывается. Для этого и пишу заметку для себя, чтобы больше "не забывать".



Создание сертификата для postfix'а.
Создать файл openssl.cnf, в котором будут лежать настройки, чтобы не вводить их ручками:
cd /etc/postfix
touch openssl.cnf
Содержимое файла openssl.cnf:
[req]
default_bits = 4096                     # Длинна ключа в битах.
default_keyfile = key.pem               # Имя файла, в который будет записан закрытый ключ.
encrypt_key = no                        # Нам не нужно шифровать закрытый ключ паролем.
default_md = sha512                     # Алгоритм хеша.
x509_extensions = v3_req                # Включаем расширение V3.
prompt = no                             # Не нужно запрашивать данные у пользователя, мы всё пропишем здесь.
distinguished_name = req_distinguished_name         # Имя секции с данными (может быть любым).

[req_distinguished_name]
C = Country                             # Двухбуквенный код страны
L = Locality                            # Город
O = Organization                        # Название организации
CN = mail.example.com                   # Имя домена
emailAddress = postmaster@example.com   # Адрес электронной почты
# Можно ещё указать следующие поля:
# ST (State - штат, название провинции и т.п.)
# OU (Organizational Unit - название подразделения)

[v3_req]
# Список альтернативных имён. Можно указать прямо здесь, но это не
# удобно, особенно если их много, так что мы указываем название секции
# с именами.
subjectAltName = @alt_names

[alt_names]
# Имена. Можно указать хоть сколько, главное чтобы цифры после точки были разными.
DNS.0 = example.com
DNS.1 = www.example.com
Создание сертификата и закрытого ключа:
openssl req -new -x509 -days 36500 -config openssl.cnf -out cert.pem -outform PEM -keyout key.pem -keyform PEM
Значение опций:
req — команда создание запроса на сертификат
-new — создать новый запрос
-x509 — создать готовый самоподписанный сертификат, а не только запрос
-days 36500 — срок действия сертификата, в данном случае 100 лет
-config openssl.cnf — наш файл с настройками
-out cert.pem — в этот файл будет записан созданный сертификат, без этой опции сертификат будет выведен на стандартный вывод
-outform PEM — формат, в котором будет записан сертификат
-keyout key.pem — аналогично -out, но для файла закрытого ключа
-keyform PEM — аналогично -outform, но для файла закрытого ключа


Создание сертификата для courier-imap / imapd.
Создать файл imapd.cnf, в котором будут лежать настройки, чтобы не вводить их ручками:
cd /etc/courier-imap
touch imapd.cnf
Содержимое файла imapd.cnf (значения аналогичны openssl.cnf):
[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no
default_md = sha1

[ req_dn ]
C=Country
L=Locality
O=Organization
CN=mail.example.com
emailAddress=postmaster@example.com

[ cert_type ]
nsCertType = server
Создание сертификата:
dd if=/dev/urandom of=/tmp/imapd.rand count=1 2>/dev/null
openssl req -new -x509 -days 36500 -nodes -config /etc/courier-imap/imapd.cnf -out /etc/courier-imap/imapd.pem -keyout /etc/courier-imap/imapd.pem
openssl gendh -rand /tmp/imapd.rand 512 >> /etc/courier-imap/imapd.pem
openssl x509 -subject -dates -fingerprint -noout -in /etc/courier-imap/imapd.pem
rm -f /tmp/imapd.rand



Создание сертификата для courier-imap / pop3d.
Создать файл pop3d.cnf, в котором будут лежать настройки, чтобы не вводить их ручками:
cd /etc/courier-imap
touch pop3d.cnf
Содержимое файла pop3d.cnf, в моем случае, полностью повторяет imapd.cnf.
Создание сертификата:
dd if=/dev/urandom of=/tmp/pop3d.rand count=1 2>/dev/null
openssl req -new -x509 -days 36500 -nodes -config /etc/courier-imap/pop3d.cnf -out /etc/courier-imap/pop3d.pem -keyout /etc/courier-imap/pop3d.pem
openssl gendh -rand /tmp/pop3d.rand 512 >> /etc/courier-imap/pop3d.pem
openssl x509 -subject -dates -fingerprint -noout -in /etc/courier-imap/pop3d.pem
rm -f /tmp/pop3d.rand

PS: Иногда бывает нужно посмотреть сертификат, "что там у него внутри"... Тут хорошо помогает команда:
openssl x509 -in cert.pem -noout -text | less





Информация с сайта http://blog.angel2s2.ru/.

Комментариев нет:

Отправить комментарий