Для начала нам нужен сертификат нашего центра сертификации:
#cd /usr/share/ssl/misc
#./CA.pl -newca
В процессе создания говорим, что common name - имя нашего хоста.
Получаем каталог /usr/share/ssl/demoCA, в кот. есть файлик cacert.pem, ставим этот сертификат конкверором.
Делаем сертификат Постфикса:
из каталога /usr/share/ssl
#openssl req -new -nodes -keyout postfix_private_key.pem -out postfix_private_key.pem -days 730если в процессе выполнения второй команды получаем ошибки открытия файлов - значит есть проблема с путями (т.к. путь к закрытому ключу сервера относительный, то имеет значение, откуда даётся команда).
#openssl ca -policy policy_anything -out postfix_public_cert.pem -infiles postfix_private_key.pem
Дальше делаем каталог /etc/postfix/certs, куда копируем /usr/share/ssl/demoCA/cacert.pem и созданные для постфикса закрытый ключ postfix_private_key.pem и сертификат postfix_public_cert.pem. Устанавливаем на ключ права 600.
Пишем в /etc/postfix/main.cf :
smtpd_use_tls = yesТаким образом мы включили TLS, сказали, где генератор случайных чисел, сертификаты, а таже установили детальные логи для tls и добавление заголовков.
tls_random_source = dev:/dev/urandom
smtpd_tls_key_file = /etc/postfix/certs/postfix_private_key.pem
smtpd_tls_cert_file = /etc/postfix/certs/postfix_public_cert.pem
smtpd_tls_CAfile = /etc/postfix/certs/cacert.pem
smtpd_tls_loglevel = 2
smtpd_tlsreceived_header = yes
Внимание - грабли!
В /etc/postfix/master.cf раскомментируйте строку
tlsmgr unix - - n 1000? 1 tlsmgrИначе получите ошибки, вроде:
Jul 15 15:26:19 deck postfix/smtpd[3098]: initializing the server-side TLS engineУбеждаемся, что всё работает:
Jul 15 15:26:19 deck postfix/smtpd[3098]: warning: connect to private/tlsmgr: Connection refused
Jul 15 15:26:19 deck postfix/smtpd[3098]: warning: problem talking to server private/tlsmgr: Connection refused
Jul 15 15:26:20 deck postfix/smtpd[3098]: warning: connect to private/tlsmgr: Connection refused
Jul 15 15:26:20 deck postfix/smtpd[3098]: warning: problem talking to server private/tlsmgr: Connection refused
Jul 15 15:26:20 deck postfix/smtpd[3098]: warning: no entropy for TLS key generation: disabling TLS support
Если мы видим данные о сертификате и ожидание дальнейшего ввода - значит всё правильно.
#openssl s_client -starttls smtp -connect localhost:25
А так, как ранее мы прикрутили к нашему серваку plaintext аутентификацию, то имеет смысл засунуть её под шифрование, /etc/postfix/main.cf:
smtpd_tls_auth_only = yesКоннектимся телнетом и убеждаемся, что нам не предлагают аутентификацию, а только STARTTLS, опять коннектимся, используя openssl, потом приветствуем сервер и убеждаемся, что теперь аутентификация возможна.
для оптимизации шифрования добавляем в конфиг:
smtpd_tls_session_cache_database = sdbm:/etc/postfix/smtpd_scache
smtpd_tls_session_cache_timeout = 3600s
Продолжение следует...
2 комментария:
Даешь handmake ман Postfix+MySQL+SASL+SpamAssassin+ClamAV+Squirrelmail
под FreeBSD!!!
=)
Будет ))
Только с TLS разберусь..
Отправить комментарий