Установка SSL сертификатов Postfix/Dovecot/Nginx



ПО: Postfix, Dovecot, Nginx
Все выше перечисленное установлено на CentOS 5.5

Postfix
Подразумевается что у вас уже есть приватный ключ и сертификат для домена.
mail.example.com.key
mail.example.com.crt

Также вам необходимо скачать файл с сертификатом промежуточного CA необходимого класса.
В этом примере я использую приватный ключ без пассфразы.
И так у нас есть 3 файла.
mail.example.com.key
mail.example.com.crt
sub.class1.server.ca.pem

Создадим файл который скушает постфикс
cat mail.example.com.key mail.example.com.crt sub.class1.server.ca.pem > mail.example.com.pem

копируем полученный файл куда надо, я свой положил в /etc/pki/postfix/
Конечно же не забиваем выставить владельца и права, так как в файле наш ключ.

в /etc/postfix/main.cf добавляем:
smtpd_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt
smtpd_tls_cert_file = /etc/pki/postfix/mail.example.com.pem # путь к нашему файлу
smtpd_tls_key_file = /etc/pki/postfix/mail.example.com.pem # путь к нашему файлу
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_tls_session_cache
smtpd_use_tls = yes

smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt
smtp_tls_session_cache_database = btree:/var/lib/postfix/smtp_tls_session_cache
smtpd_tls_security_level = may

smtpd_tls_received_header = yes
smtpd_tls_loglevel = 1
smtpd_tls_auth_only = no
tls_random_source = dev:/dev/urandom 


Что значит каждый параметр и за что он отвечает можно узнать в документации для Postifx
для проверки того что все окей можно использовать следующую комманду:
openssl s_client -starttls smtp -showcerts -connect localhost:25

В результате должно вернуться что то вроде:
SSL handshake has read 4760 bytes and written 354 bytes

— New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 4096 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol: TLSv1
Cipher: DHE-RSA-AES256-SHA
Session-ID: 418AA0ED7BA85B2B9301FA127D05DCAFABCEDC192101A6E75DD872FA3E528366
Session-ID-ctx:
Master-Key: 498FB41D5810A9768710936351DC92169B6D7DEFAHTEDBDUO60DE9349DA7EB5536F975A8BC4AF190466B637CC129A93E
Key-Arg: None
Krb5 Principal: None
Start Time: 1287331961
Timeout: 300 (sec)
Verify return code: 0 (ok)
— 250 DSN

в /etc/postfix/master.cf раскомментируем следующие строки:
smtps inet n - n - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes


Dovecot
У вас уже есть 3 файла
mail.example.com.key
mail.example.com.crt
sub.class1.server.ca.pem

Копируем ключ, создаем сертификат который скушает dovecot
cp mail.example.com.key /etc/pki/dovecot/private/
cat mail.example.com.crt sub.class1.server.ca.pem > /etc/pki/dovecot/certs/mail.example.com.pem


В dovecot.conf надо прописать:
ssl_cert_file = /etc/pki/dovecot/certs/mail.example.com.pem
ssl_key_file = /etc/pki/dovecot/private/mail.example.com.key 

и конечно же включить SSL
ssl_listen = *
ssl = yes

И добавить в список протоколов необходимые лично вам.
protocols = pop3 pop3s imap imaps


Если надо обеспечить IMAP и POP на разных субдоменах например imap.example.com и pop.example.com, то нужно для каждого субдомена подготовить сертификаты как указано выше
и внести следующие изменения в dovecot.conf
protocol imap {
listen = 192.0.2.1:143
ssl_listen = 192.0.2.1:993
ssl_cert_file = /etc/pki/dovecot/certs/imap.example.com.pem
ssl_key_file = /etc/pki/dovecot/private/imap.example.com.key
}
protocol pop3 {
listen = 192.0.2.1:110
ssl_listen = 192.0.2.1:995
ssl_cert_file = /etc/pki/dovecot/certs/pop.example.com.pem
ssl_key_file = /etc/pki/dovecot/private/pop.example.com.key
}


Nginx
У вас уже есть 3 файла
mail.example.com.key
mail.example.com.crt
sub.class1.server.ca.pem

Копируем ключ, создаем сертификат который скушает nginx
cp mail.example.com.key /etc/pki/nginx/private/
cat mail.example.com.crt sub.class1.server.ca.pem > /etc/pki/nginx/certs/mail.example.com.pem

в конфигурации для хоста nginx должно быть что типа такого:
server {
listen 443;
server_name mail.example.com;
ssl on;
ssl_certificate /etc/pki/nginx/certs/mail.example.com.pem;
ssl_certificate_key /etc/pki/nginx/private/mail.example.com.key;

ssl_session_timeout 5m;

ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;

location / {
root /srv/www/htdocs/;
index index.html index.htm;
}
}
  • avatar
  • 0
comments powered by Disqus

0 комментариев

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