Instalacja certyfikatu SSL w serwerze pocztowym Postfix

  1. Po otrzymaniu e-maila zawierającego certyfikat SSL dla serwera skopiuj go do dowolnego edytora tekstowego i zapisz jako np. mojadomena.pem w katalogu serwera np. w /etc/postfix/
  2. Zainstaluj certyfikat pośredni (intermediate) wystawcy odpowiedni dla zamówionego certyfikatu SSL. Certyfikat pośredni należy umieścić na końcu pliku mojadomena.pem, czyli za certyfikatem serwera. Bardzo ważne jest zachowanie kolejności certyfikatów w pliku.


    Struktura pliku powinna być następująca:

    -----BEGIN CERTIFICATE-----
     jLjNGrII5i98fcKYlXhxuvts7dcMD5m1b+nwcO4gt
     ezN2vxF+gjG0hU804uFXww5C0dfsgdsTRSxVcvcR+   « certyfikat serwera
     O2IWGtrgZqYZN2zPAQpYaXc5NOjJbi2vcbxcbvvbj
     -----END CERTIFICATE-----
     -----BEGIN CERTIFICATE-----
     BgNVsHR8t587fdghddfgEP6DAMDigNqA0hjJodHRw
     Oi8vcmFwaWRtY3JsLmdl5cejjb3eefrRydXN0LmNv   « certyfikat pośredni
     4vkBDvp4RHwRE44bT49ymDAdvsfgX3kVWGWfGpN3Q
     -----END CERTIFICATE-----
  3. Otwórz plik konfiguracyjny Postfiksa main.cf w edytorze tekstowym (plik main.cf przeważnie jest zlokalizowany w katalogu /etc/postfix/)
  4. W sekcji dotyczącej TLS (# TLS parameters) zlokalizuj dyrektywy smtpd_tls_key_file, smtpd_tls_cert_file. Jeżeli nie istnieją, należy je dopisać jak poniżej:
    # TLS parameters
    
    smtpd_tls_key_file = /etc/postfix/mojadomena.key
    smtpd_tls_cert_file = /etc/postfix/mojadomena.pem
  5. Dodatkowo, należy uaktywnić obsługę TLS za pomocą dyrektywy smtpd_tls_security_level i smtp_tls_security_level (dla wersji 2.3 i nowszych):

    Dla demona smtpd:
    smtpd_tls_security_level = may
    Ustawienie parametru smtpd_tls_security_level na wartość may uaktywnia połączenia SSL warunkowo: Jeżeli zdalny serwer (wysyłający wiadomość e-mail) ogłasza obsługę SSL, to połączenie do naszego serwera (smtpd) zostanie nawiązane w połączeniu SSL. Gdy zdalny serwer nie ma włączonej obsługi połączeń SSL, to połączenie zostanie nawiązane bez szyfrowania. E-mail zostanie dostarczony do naszego serwera w nieszyfrowanym połączeniu.

    Dla klienta smtp:
    smtp_tls_security_level = may
    Ustawienie parametru smtp_tls_security_level na wartość may uaktywnia połączenia SSL warunkowo: Jeżeli zdalny serwer (odbierający wiadomość e-mail) ogłasza obsługę SSL, to połączenie z naszego serwera (smtpd) zostanie nawiązane w połączeniu SSL. Gdy zdalny serwer nie ma włączonej obsługi połączeń SSL, to połączenie zostanie nawiązane bez szyfrowania. E-mail zostanie dostarczony z naszego serwera w nieszyfrowanym połączeniu.

  6. Wyłączenie przestarzałych i słabych szyfrów oraz protokołów. Jednocześnie aktywne pozostaną protokoły TLSv1, TLSv1.1 i TLSv1.2.
    smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
    smtpd_tls_mandatory_ciphers = high
    tls_high_cipherlist=EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
  7. Dołączenie certyfikatów wystawców (wymaga zainstalowanego pakietu ca-certificates).
    smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
    Zapobiega pojawianiu się w logach Postfiksa komunikatów o niezaufanym połączeniu do obcego serwera. Na poniższym przykładzie połączenie do usługi Gmail.

    Przed:
    Jun 1 12:34:29 mail postfix/smtp[27589]: setting up TLS connection to gmail-smtp-in.l.google.com[74.125.136.27]:25
    Jun 23 12:34:29 mail postfix/smtp[27589]: Untrusted TLS connection established to gmail-smtp-in.l.google.com[74.125.136.27]:25: TLSv1.1 with cipher ECDHE-RSA-AES128-SHA (128/128 bits)
    Po:
    Jun 1 12:34:50 mail postfix/smtp[29277]: setting up TLS connection to gmail-smtp-in.l.google.com[74.125.136.27]:25
    Jun 1 12:34:50 mail postfix/smtp[29277]: Trusted TLS connection established to gmail-smtp-in.l.google.com[74.125.136.27]:25: TLSv1.1 with cipher ECDHE-RSA-AES128-SHA (128/128 bits)
  8. Włączenie logowania zdarzeń związanych z obsługą połączeń TLS dla serwera smtpd i klienta smtp
    smtpd_tls_loglevel = 1
    smtp_tls_loglevel = 1
  9. Przeładuj konfigurację Postfiksa.
    sudo service postfix reload

Przydatne linki