Teljes virtuális levelezőszerver/SSL tanúsítványt

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Complete Virtual Mail Server/SSL Certificates and the translation is 100% complete.
Other languages:

Bevezetés

A biztonság és adatvédelem napjainkban egyre fontosabb kérdéssé válik, így az SSL használata a szerverek biztosítására nyilvánvaló megoldásnak tűnik. Az Apache, a Courier-imap és a postfix mind biztosítható SSL használatával.

SSL telepítése

Az SSL a legtöbb szoftvercsomag esetében szoftverfüggőség és fordítási idő opció. A dev-libs/openssl szoftvercsomag a kulcsfontosságú összetevő, amelyet az ssl USE jelölőzászlóval kell behúzni. Ha ez korábban nem lett beállítva, akkor engedélyezze azt, és frissítse az összes szoftvercsomagot, amely használja:

root #emerge --newuse @world

SNI

Van néhány probléma, amely felmerülhet, ha egyetlen IP-címen több domént használunk. Az Apache ezt a problémát a SNI segítségével oldotta meg, amely lehetővé teszi több tanúsítvány használatát egyetlen IP-n. Ehhez azonban mind a böngészőnek, mind a szervernek támogatnia kell ezt. Az IMAP (és POP3) vagy az SMTP valójában nem támogatja ezt. Az egyetlen valódi módja annak, hogy egyetlen IP-n több host számítógépet támogassunk, egy olyan tanúsítvány használata, amely minden domént lefed. Nem túl elegáns, de működhet.

SSL tanúsítvány beszerzése

Jelenleg két és fél módja van az SSL tanúsítvány beszerzésének. Az egyik lehetőség, hogy vásárol egy tanúsítványt valamelyik megbízható szolgáltatótól. Egy önmagát aláírt tanúsítvány is használható, bár ez figyelmeztetéseket vonhat maga után a felhasználók klienseiben. A köztes megoldás – ami az ajánlott lehetőség is egyben, ha nem vásárol tanúsítványt – egy tanúsítvány használata a cacert.org weboldalról. Ők keményen dolgoznak azon, hogy a tanúsítványuk bekerüljön a főbb böngészőkbe és operációs rendszerekbe, de a legjobb, hogy mindez ingyenes és díjmentes szolgáltatás.

Önmagát aláírt megoldás

A legtöbb alkalmazás előre generál önmagát aláírt tanúsítványokat, és hajlamos azokat a /etc/ssl könyvtárba telepíteni. Egy új önmagát aláírt tanúsítvány könnyen létrehozható az OpenSSL segítségével:

root #mkdir -p /etc/ssl/postfix/
root #cd /etc/ssl/postfix/
root #/etc/ssl/misc/CA.pl -newca
root #/etc/ssl/misc/CA.pl -newreq-nodes
root #/etc/ssl/misc/CA.pl -sign

Ennek eredményeként három fájl jött létre: /etc/ssl/postfix/newkey.pem, /etc/ssl/postfix/newreq.pem, /etc/ssl/postfix/newcert.pem. Valamint létrejön a hozzá tartozó CA Root tanúsítvány: /etc/ssl/postfix/demoCA/cacert.pem. Valószínűleg tanácsos ezeket logikusabb névre átnevezni.

CACert.org által aláírt tanúsítvány

A CACert.org egy egyszerű szkriptet kínál az SSL tanúsítványok létrehozásának elősegítésére. A csr szkriptet le kell tölteni és végre kell hajtani. Ebben a példában a levelezőszervert imap-nak hívják, de DNS-ben aliasok kerülnek beállításra mail, pop, pop3, pop3s, imaps és foo név alatt. Természetesen további aliasok is hozzáadhatók szükség szerint. Vegyük figyelembe, hogy a foo azért került hozzáadásra, mert ez az IMAP szolgáltatást nyújtó rendszer neve. Nem azért nevezték el foo-nak, mert a postfix, a web vagy bármely más szerver neve foo.

user $sh csr
Private Key and Certificate Signing Request Generator
This script was designed to suit the request format needed by
the CAcert Certificate Authority. www.CAcert.org
 
Short Hostname (ie. imap big_srv www2): foo
FQDN/CommonName (ie. www.example.com) : foo.example.com
Type SubjectAltNames for the certificate, one per line. Enter a blank line to finish
SubjectAltName: DNS:mail.example.com
SubjectAltName: DNS:smtp.example.com
SubjectAltName: DNS:smtps.example.com
SubjectAltName: DNS:imap.example.com
SubjectAltName: DNS:imaps.example.com
SubjectAltName: DNS:pop.example.com
SubjectAltName: DNS:pop3.example.com
SubjectAltName: DNS:pop3s.example.com
SubjectAltName: DNS:mail.example.net
SubjectAltName: DNS:imap.example.net
SubjectAltName: DNS:imaps.example.net
SubjectAltName: DNS:pop.example.net
SubjectAltName: DNS:pop3.example.net
SubjectAltName: DNS:pop3s.example.net
SubjectAltName: DNS:
Running OpenSSL...
Generating a 2048 bit RSA private key
.................+++
..................................+++
writing new private key to '/root/imap.example.com_privatekey.pem'
-----
Copy the following Certificate Request and paste into CAcert website to obtain a Certificate.
When you receive your certificate, you 'should' name it something like foo.example.com_server.pem
 
-----BEGIN CERTIFICATE REQUEST-----
MIIDHTsdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfsdfasdf
<snip>
asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfpyqT
-----END CERTIFICATE REQUEST-----
 
 
The Certificate request is also available in /root/foo_csr.pem
The Private Key is stored in /root/foo_privatekey.pem

Ez létrehozott egy tanúsítvány aláírási kérelmet, amelyet bármely Root CA aláírhat, nem csak a CACert.org. A CACert.org esetében azonban a Server Certificates alatt található egy New nevű link, amely megnyit egy szerkesztő mezőt a fenti tanúsítvány kérelemhez. A -----BEGIN CERTIFICATE REQUEST----- jelöléstől kezdve, egészen a -----END CERTIFICATE REQUEST----- jelölésig lévő észt be kell illeszteni szerkesztő mezőbe, majd el kell küldeni a Submit gomb segítségével. A szerver ezután ellenőrzi a kérelmet, és ennek alapján létrehozza a tanúsítványt. A tanúsítványt ezután ki kell másolni és be kell illeszteni, beleértve a BEGIN és END jelölőket, egy új fájlba, amely a foo.example.com_crt.pem nevet kapja. A tanúsítványra mutató linket az e-mail címre is el fogják küldeni, amely a ca-cert.org fiókhoz van kötve.

root #cat > foo.example.com_crt.pem
-----BEGIN CERTIFICATE-----
MIIGhzClkjhlkjhlkjhkljhkljhkljhkljhkljhkljhlkjhkljhkljhlkjhkljhk
<snip>
kljhlkjhkljhlkjhlkjhlkjhkljhkljhlkjhlkjhkljhk==
-----END CERTIFICATE-----

Ennek eredményeként három fájlnak kell megmaradnia: foo.example.com_[privatekey, csr, crt].pem. Ez lesz az elnevezési konvenció, amelyet a dokumentum további részében követni fogunk.

Note
Mielőtt tanúsítványt igényelne, egy fiókot kell létrehozni a CAcert weboldalon. Bejelentkezés után a tanúsítványhoz tartozó domén nevet regisztrálni kell. A regisztráció befejezése után a tanúsítványkérelmet be lehet illeszteni a Server Certificates (New) oldalra.

Apache

Az Apache beállítása máshol már nagyon jól le van írva, és egy működő SSL-kompatibilis webszervert eredményez. A Postfixadmin szoftvert, ha külsőleg használják, akkor ideális esetben úgy kell biztosítani, hogy csak https protokollon keresztül működjön. A Roundcube vagy általában a webmail szintén beállítható, hogy SSL segítségével védett legyen, de továbbra is nyitva maradhat az egyszerű HTTP előtt.

A Roundcube rendelkezik egy hasznos opcióval ehhez, hogy minden bejövő kérés HTTPS protokollra legyen kényszerítve. Ez azt jelenti, hogy amikor egy felhasználó megnyitja a http://webmail.example.com weboldalt, akkor azonnal át lesz irányítva a https://webmail.example.com weboldalra. Ha megfelelő SSL tanúsítványt használ, akkor ez erősen ajánlott. Azonban, ha önmagát aláírt tanúsítványt vagy olyan CA-cert.org tanúsítványt használ, amelynek Root tanúsítványa nincs telepítve minden felhasználó számára, akkor ezt ki kell hagyni.

FILE /var/www/webmail.example.com/htdocs/roundcube/config/main.inc.phpHTTPS kikényszerítése
$rcmail_config['force_https'] = true;

Courier-imap

Ha valami, akkor az IMAP SSL protokollal történő biztonságossá tétele rendkívül ajánlott eljárás. Az IMAP biztonságos kapcsolatának használata azt jelenti, hogy ha a jelszó egyszerű szövegként kerül elküldésre, ez akkor is a biztosított IMAP kapcsolaton keresztül történik, így nem merül fel biztonsági probléma. Az amúgy embert által olvasható szöveges jelszón így is titkosítva kerül elküldésre.

Create Self-Signed Certificate

A Courier-imap két egyszerű szkriptet biztosít saját aláírású SSL tanúsítványok létrehozásához: mkpop3dcert és mkimapdcert. Ezek a szkriptek az /etc/courier-imap/pop3d.cnf és az /etc/courier-imap/imapd.cnf fájlokat értelmezik, külön-külön. Egy lehetséges ötlet lehet először saját aláírású tanúsítványokat használni, majd ezeket aláírt tanúsítványokra cserélni, mivel ez megkönnyítheti a tesztelést. Ha saját aláírású tanúsítványok használata kötelező, szerkessze meg az említett fájlokat, ellenkező esetben az alapértelmezett beállítások is elegendőek lesznek.

root #mkpop3dcert
root #mkimapdcert
Warning
Jelenleg, ahogyan az Gentoo bug #251047 említi, a beállításfájlok helytelen formátumot használnak, és ezért hiba léphet fel. További részletekért nézze meg a hibajelentést.
Note
A két generált tanúsítvány neve /etc/courier-imap/pop3d.pem és /etc/courier-imap/imapd.pem. Ha saját aláírású tanúsítványok használata szükséges, ellenőrizni kell a beállításfájlokban megadott alapértelmezett elérési utakat, amelyek ezekre a fájlokra mutatnak, ahogyan az alább említve van.

CACert.org által aláírt tanúsítvány használata

A mkimapdcert szkript létrehoz egy saját aláírású tanúsítványt, és egyetlen fájlba kombinálja őket, mivel a Courier-imap valójában nem használja a három különálló fájlt, mint a legtöbb alkalmazás, és különleges formázásra van szüksége.

A fájl a privát kulccsal kezdődik.

Note
Ha az /etc/ssl könyvtárban nem létezik a courier-imap könyvtár, akkor azt manuálisan kell létrehozni.
root #mkdir -p /etc/ssl/courier-imap/
root #cat foo.example.com_privatekey.pem > /etc/ssl/courier-imap/foo.example.com.pem

Ezt követi az aláírt tanúsítvány:

root #cat foo.example.com_crt.pem >> /etc/ssl/courier-imap/foo.example.com.pem

Végül a Diffie-Hellman paraméterek kerülnek hozzáadásra:

root #openssl gendh 1024 >> /etc/ssl/courier-imap/foo.example.com.pem

Az elkészült fájl tartalma hasonló kell, hogy legyen:

FILE /etc/ssl/courier-imap/foo.example.com.pemAz imap tanúsítvány
-----BEGIN PRIVATE KEY-----
MIIEvaasdfasdfSfasdfadfasdfasdfasdfasdfasdfasdfasdfasdsahdahhgfh
<snip>
asdfasdfasdfsdfsdf
-----BEGIN CERTIFICATE REQUEST-----
MIIDHTsdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfsdfasdf
<snip>
asdfasdfasdfasdfaswYEdpa+rdFfs=
-----END PRIVATE KEY-----
-----END CERTIFICATE REQUEST-----
-----BEGIN CERTIFICATE-----
MIIGhzClkjhlkjhlkjhkljhkljhkljhkljhkljhkljhlkjhkljhkljhlkjhkljhk
<snip>
kljhlkjhkljhlkjhlkjhlkjhkljhkljhlkjhlkjhkljhk==
-----END CERTIFICATE-----
-----BEGIN DH PARAMETERS-----
MIGHAoGBAPF7fJnfw+VPPev9FAkf2XJNFimn4ik+zkXXuHD5t9Oke1Yx224WTocq
KJ+Zv9onecK0MPYRUj8PPqqy+Q00pScW9+qPSr9T2sEG/meKjLqqA3XQf4Gwzqco
SUG0PEjiYNNfe966p9E1vp6yN5+gSyu6zv9Vn+cfYY2q7d3a4x9rAgEC
-----END DH PARAMETERS-----

SSL beállítása

Mint fentebb említettük, a tanúsítvány mind a pop3, mind az imap host számítógépneveket magában foglalja, ezért feltételezhető, hogy a pop3 és az imap ugyanazon az IP-n/host számítógépen fut. Ez azonban nem kötelező. A pop3 lehet akár egy másik számítógép is, ugyanazzal a tanúsítvánnyal (nem ajánlott), vagy egy saját tanúsítvánnyal.

POP3

FILE /etc/courier-imap/pop3d-sslTanúsítvány beállítása
##NAME: POP3DSSLSTART:0
POP3DSSLSTART=YES
 
##NAME: TLS_CERTFILE:0
TLS_CERTFILE=/etc/ssl/courier-imap/foo.example.com.pem

A szerver indítása lehetővé kell, hogy tegye a pop3 működését SSL protokollon keresztül:

root #/etc/init.d/courier-pop3d-ssl restart

IMAP

FILE /etc/courier-imap/imapd-sslTanúsítvány beállítása
##NAME: IMAPDSSLSTART:0
IMAPDSSLSTART=YES
 
##NAME: TLS_CERTFILE:0
TLS_CERTFILE=/etc/ssl/courier-imap/foo.example.com.pem

A szerver indítása lehetővé kell, hogy tegye az imap működését SSL protokollon keresztül:

root #/etc/init.d/courier-imapd-ssl restart

SSL tesztelése

A tesztelés nehezebbé válik, mivel a telnet már nem használható. A legjobb megoldás egy e-mail kliens, például a Thunderbird elindítása, majd először egy normál kapcsolat beállítása annak ellenőrzésére, hogy minden működik-e, ahogyan korábban a telnet megfelelően működött. Ezután engedélyezni kell az SSL opciót a fiókhoz, és ellenőrizni kell, hogy továbbra is működik-e. Az alapértelmezett imap-ssl port a 993. A STARTTLS csak telneten keresztül ellenőrizhető, hogy engedélyezve van-e, a STARTTLS képesség ellenőrzésével.

Note
Néhány e-mail kliens nem teljes a TLS implementációját tekintve. Ezeknek a klienseknek segíthet, ha a /etc/courier-imap/imapd-ssl fájlban a TLS_STARTTLS_PROTOCOL értékét TLS1-ről SSL3-ra módosítja.

Ha az SSL protokollal védett szolgáltatások most már megfelelően működnek, akkor hozzáadhatóak az alapértelmezett futási szinthez:

root #rc-update add courier-pop3d-ssl default
root #rc-update add courier-imapd-ssl default
Note
Ahogy korábban említettük, a pop3 protokollt csak akkor adja hozzá, ha az valóban szükséges.

SMTP, SSL protokollal való biztosítása

A postfix használatához szükséges tanúsítványokat az /etc/ssl/postfix/ könyvtárba kell elhelyezni, vagy ha ugyanazokat a tanúsítványokat használják, mint a courier-imap esetében, akkor szintén az /etc/ssl/postfix/ könyvtárba kell elhelyezni. Ha a CACert.org megoldást használjuk, akkor annak a Root tanúsítványát kell használni. Gentoo előre telepíti a CACert.org Root tanúsítványt, és azt kell használni.

FILE /etc/postfix/main.cfTanúsítvány beállítása az SMTP protokoll számára
# SSL Authentication
smtpd_tls_security_level = may
smtpd_tls_auth_only = no
smtpd_tls_loglevel = 3
smtpd_tls_key_file = /etc/ssl/postfix/foo.example.com_privatekey.pem
smtpd_tls_cert_file = /etc/ssl/postfix/foo.example.com_crt.pem
smtpd_tls_CAfile = /etc/ssl/certs/cacert.org_root.pem
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
Note
Hibakeresési célokra a smtpd_tls_loglevel értéke 3-ra lett növelve. Emellett a smtpd_tls_auth_only # no azt jelenti, hogy a felhasználók (és a webmail) még mindig bejelentkezhetnek nem biztonságos módon. Az opció "yes" értékre állítása arra kényszeríti az összes klienst, hogy kizárólag hitelesített kapcsolatokat használjon.
Note
A CaCert fájl át lett nevezve /etc/ssl/certs/cacert.org_root.pem névre, korábban /etc/ssl/certs/cacert.org.pem néven szerepelt.

Most a STARTTLS már használható a hitelesített kapcsolat létrehozására a 25-ös porton keresztül. Azonban az SSL/TLS támogatást is engedélyezni kell a 465-ös porton (smtps). Míg a Courier-imap ezt automatikusan elvégezte, a postfix esetében változtatásra van szükség a master.cf fájlban:

FILE /etc/postfix/master.cfAz smtps támogatás engedélyezése
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes

Indítsa újra a postfix szoftvert az SSL protokollal védett szolgáltatások elindításának az érdekében:

root #/etc/init.d/postfix restart

Tesztelés

A telnet csak minimálisan használható tesztelésre. Valójában csak az elérhető opciók ellenőrzésére használható. A STARTTLS lehetőségnek szerepelnie kell az elérhető opciók között:

user $telnet foo.example.com 25
220 foo.example.com ESMTP Postfix
EHLO example.com
250-mail.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.

Az összes kapcsolat megfelelő működésének teszteléséhez egy friss verziójú Thunderbird a legjobb választás. Amikor egy új fiókot hozzáad, a Thunderbird megpróbál STARTTLS-t használva kapcsolódni az alapértelmezett porton. Ha ez nem sikerülne, vagy manuális kapcsolódási kísérletet tesz, akkor lehetőség van SSL/TLS használatára a 993-as és 465-ös portokon. Ezt követően nyomja meg az újratesztelés gombot. Ez biztosítja, hogy a fiók biztonságos kapcsolatokkal jöjjön létre.

Szerverek közötti kapcsolatok biztonságossá tétele

A postfix megpróbálhat biztonságos kapcsolatokat használni az e-mailek más SMTP-szerverekre történő küldéséhez. Bár nem minden szerver támogatja ezt, érdemes aktiválni.

FILE /etc/postfix/main.cfTLS használatának a megpróbálása az e-mailek továbbításához
# Enable TLS for sending mails if supported by other server
smtp_tls_security_level = may
smtp_tls_CApath = /etc/ssl/certs
smtp_tls_loglevel = 3
Note
Hibakeresési célokra az smtp_tls_loglevel értéke 3-ra lett növelve. Az smtp_tls_security_level "encrypt" értékre állítható, hogy az e-mailek kizárólag TLS-kapcsolatokon keresztül kerüljenek továbbításra. Ez azonban nem ajánlott, mivel az interneten található sok levelezőszerver egyáltalán nem támogatja a TLS-t, vagy nem kompatibilis vele.

Indítsa újra a Postfixet utána:

root #/etc/init.d/postfix restart

A teszteléshez küldhet egy e-mailt egy olyan címre, amely egy TLS-t támogató szervert használ. A naplóban ekkor egy ilyen sor jelenhet meg:

user $tail -n 10 /var/log/mail/mailinfo.log
...
postfix/smtp[15209]: Trusted TLS connection established to mx.example.com[x.x.x.x]:25: TLSv1 with cipher AES256-SHA (256/256 bits)
...

Összefoglalás

Amint minden a várakozásoknak megfelelően működik, a naplózás ismét kikapcsolható:

FILE /etc/postfix/main.cfNaplózás letiltása
smtpd_tls_loglevel = 0
smtp_tls_loglevel = 0