Криптиране на данните както в интернет така и в Postfix, Dovecot дават сигурност. Има няколко вариaнта да се криптират данните. В случая ще ползваме собствено подписан. Ще е един сертификат за Postfix и Dovecot защото някои пощенски клиенти ще откажат връзката определяща я с грешки. Тука може би трябва да сме по-подробни. Ще се запитате нали генерирахме едни, когато изграждахме Apache. Отговорът е много прост. Това бяха сертификат и ключ, когато ползваме HTTPS протокола. Сега за PostFix и Dovecot генерираме лично нови сертификати. Можеше да ползваме и предните, но проблема е, че на всеки 90 дена се сменят. Това налага да правим скриптове които автоматично да ги презареждат. Не, че е грешен подхода но лично аз предпочитам друг сертификат и ключ валиден 10 години а до тогава нещата гаранция, че ще се променят.
Най-простият начин за създаване на собствен подпис е като се стартира долната команда. Тя ще генерира на сървъра валиден сертификат за всякакви цели, който ще е валиден 10 години.
# openssl req -newkey rsa:4096 -nodes -sha512 -x509 -days 3650 -nodes -out /etc/ssl/certs/mailserver.pem -keyout /etc/ssl/private/mailserver.key Country Name (2 letter code) [AU]: BG State or Province Name (full name) [Some-State]: Targovishte Locality Name (eg, city) []: Tar Organization Name (eg, company) [Internet Widgits Pty Ltd]: Navy Organizational Unit Name (eg, section) []: IT Common Name (e.g. server FQDN or YOUR name) []: home.tlan.net Email Address []: tachko@tlan.net
Да проверим дали са генерирани сертификатите
# ls /etc/ssl/certs/ 999c560e mailserver.pem ssl-cert-snakeoil.pem
# ls /etc/ssl/private/ mailserver.pem ssl-cert-snakeoil.key
И нашите сертификати са там. Променяме правата върху сертификата така, че да е достъпен само за root потребителя
# chmod go= /etc/ssl/private/mailserver.key
Проверяваме дали са променени правата
# ls -l /etc/ssl/private/mailserver.key -rw------- 1 root root 3272 Apr 8 08:47 /etc/ssl/private/mailserver.key
Това по принцип в тази задача ни устройва и лично аз използвам този вариянт. Проверяваме дали сертификата е за този хост (има валиден CN)
# openssl x509 -noout -in /etc/ssl/certs/mailserver.pem -subject -issuer -dates subject= /C=BG/ST=Targovisthe/L=Trg/O=Navy/OU=IT/CN=home.tlan.net/emailAddress=tachko@tlan.net issuer= /C=BG/ST=Targovisthe/L=Trg/O=Navy/OU=IT/CN=home.tlan.net/emailAddress=tachko@tlan.net notBefore=Apr 8 05:47:08 2016 GMT notAfter=Apr 6 05:47:08 2026 GMT
issued - кой е издателя на сертификата
subject - подчинен е на
dates - за кои дати е валиден (notBefore=Apr 8 05:47:08 2016 GMT notAfter=Apr 6 05:47:08 2026 GMT), 10 години е валиден
Можеше и друга по съкратена команда, пак дава достатъчна информация
# openssl x509 -noout -in /etc/ssl/certs/mailserver.pem -subject subject= /C=BG/ST=Targovisthe/L=Trg/O=Navy/OU=IT/CN=home.tachko.com/emailAddress=tachko@tachko.com # openssl x509 -noout -text -in /etc/ssl/certs/ssl-cert-snakeoil.pem # openssl rsa -noout -text -in /etc/ssl/private/mailserver.key # openssl x509 -noout -modulus -in /etc/ssl/certs/mailserver.pem | openssl md5 (stdin)= 16be3ad6ed832917df8d451b144f3705 # openssl rsa -noout -modulus -in /etc/ssl/private/mailserver.key | openssl md5 (stdin)= 16be3ad6ed832917df8d451b144f3705 CN=home.tlan.net е както FQDN home.tlan.net. Всичо е точно Може да се направи и една проверка за вярността на сертификата # openssl verify /etc/ssl/certs/mailserver.pem /etc/ssl/certs/mailserver.pem: C = BG, ST = Targovisthe, L = Trg, O = Navy, OU = IT, CN = home.tlan.net, emailAddress = tachko@tlan.net error 18 at 0 depth lookup:self signed certificate OK
За повече инфо https://www.madboa.com/geek/openssl/
Сетификата и ключа са създадени да ги имплементираме:
# vi /etc/postfix/main.cf # TLS parameters # smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem # smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key smtpd_tls_cert_file=/etc/ssl/certs/mailserver.pem smtpd_tls_key_file=/etc/ssl/private/mailserver.key
# vi /etc/dovecot/conf.d/10-ssl.conf # ssl_cert = </etc/ssl/certs/ssl-cert-snakeoil.pem # ssl_key = </etc/ssl/private/ssl-cert-snakeoil.key ssl_cert = </etc/ssl/certs/mailserver.pem ssl_key = </etc/ssl/private/mailserver.key
Този вариaнт е малко по-добър но на клиентите ще се наложи да инсталират нашия сертификат ръчно за да се установи отношение на доверие. Сега няма да го показваме но е опция
Това е почти винаги най-добрия вариянт. Безплатен е и надежден. Повечето браузъри и пощенски клиенти го ползват. Но си остава проблема с автоматичното зареждане. Ако смятате, че сте достатъчно подготвени да изпълните този вариант то той е много добър. И накрая нещо много важно, да защитим сертификата ни да е достъпен само от потребителя root
# chmod go= /etc/ssl/certs/mailserver.pem # service postfix restart # service dovecot restart
Следва WEB администрация на мейл сървър