A bejegyzésből megtudható, hogy a már korábban telepített- és beállított ISPConfig 3.1 Szerver adminisztrációs eszközt, hogyan tudjuk az ingyenes Let’s Encrypt tanúsítvány hatóság tanúsítványával használni ingyenesen.
Először is készítsünk egy tanúsítványt a szerverünk számára. Először állítsuk le az Apache szolgáltatást.
service apache2 stop
Majd készítsük el a tanúsítványt:
certbot-auto certonly
Megkérdezi a program, hogy hogyan kívánsz hitelesíteni, én az 1-es lehetőséget választottam, illetve a hitelesíteni kívánt domain nevet kérdezte meg, ezután más teendő nem is volt, a tanúsítvány létrejött. A teljes kimenetet alább láthatod:
root@mx:~# certbot-auto certonly Saving debug log to /var/log/letsencrypt/letsencrypt.log How would you like to authenticate with the ACME CA? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: Apache Web Server plugin (apache) 2: Spin up a temporary webserver (standalone) 3: Place files in webroot directory (webroot) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-3] then [enter] (press 'c' to cancel): 1 Plugins selected: Authenticator apache, Installer None Please enter in your domain name(s) (comma and/or space separated) (Enter 'c' to cancel): mx.zsoltina.eu Obtaining a new certificate Performing the following challenges: http-01 challenge for mx.zsoltina.eu Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/mx.zsoltina.eu/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/mx.zsoltina.eu/privkey.pem Your cert will expire on 2020-03-21. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again. To non-interactively renew *all* of your certificates, run "certbot-auto renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Nincs más dolgunk, mint automatizálni a tanúsítványok használatát:
cd /usr/local/ispconfig/interface/ssl/
mv ispserver.crt ispserver.crt-$(date +"%y%m%d%H%M%S").bak
mv ispserver.key ispserver.key-$(date +"%y%m%d%H%M%S").bak
mv ispserver.pem ispserver.pem-$(date +"%y%m%d%H%M%S").bak
ln -s /etc/letsencrypt/live/$(hostname -f)/fullchain.pem ispserver.crt
ln -s /etc/letsencrypt/live/$(hostname -f)/privkey.pem ispserver.key
cat ispserver.{key,crt} > ispserver.pem
chmod 600 ispserver.pem
Itt annyi történik, hogy a 2-4 sorban átnevezzük az ISPConfig tanúsítványának fájljait, időbélyeggel elnevezett backupot készítünk belőlük.
A .pem fájl átnevezését csak akkor végezzük, ha korábban már készítettünk ispserver.pem fájlt. Ellenkező esetben hagyjuk ki.
Ezután a Let’s Encrypt live könyvtárából átlinkeljük a weboldalon már működő hitelesített tanúsítványunk fájljait az ISPConfig fájljai helyére. Majd elkészítjük a .pem fájlt is, amit az előző két fájl (crt és key) összefűzésével kapunk. Ennek később lesz jelentősége a többi szolgáltatásnál.
Az utolsó sorban pedig leszedjük a pem fájlról a csoport és a többiek jogosultságait.
SSL kiterjesztése a többi webszolgáltatásra
Ebben a fejezetben az ISPConfig-ra kiterjesztett SSL tanúsítvány fájljait fogjuk tovább linkelni az adott webszolgáltatáshoz. Bölcsebb megoldás, mintha a különböző szolgáltatások konfigurációiban állítgatnánk át az útvonalakat direktben a fenti fájlokra.
Postfix
A postfix SSL „beláncolásához” adjuk ki az alábbi parancsokat (továbbra is root-ként):
cd /etc/postfix/
mv smtpd.cert smtpd.cert-$(date +"%y%m%d%H%M%S").bak
mv smtpd.key smtpd.key-$(date +"%y%m%d%H%M%S").bak
ln -s /usr/local/ispconfig/interface/ssl/ispserver.crt smtpd.cert
ln -s /usr/local/ispconfig/interface/ssl/ispserver.key smtpd.key
service postfix restart
Itt is hasonló történik, mint feljebb: A második és harmadik sorban biztonsági másolatot készítünk a szerver feltelepítésekor létrehozott (szintén self signed) tanúsítványokról, majd a következő két sorban pedig a backup-olt fájlok helyére symlinkeket helyezünk el, amik az ISPConfig3 kezelőpanelünk fentebb elkészített linkjeire mutatnak.
Végül újraindítjuk a postfix daemonját.
Dovecot
A Dovecot esetében, ha mindent úgy telepítettünk fel az elején, ahogyan a korábbi szerver leírásban, akkor a Dovecot már eleve a postfix SSL fájljait használja. De azért ellenőrizzük:
nano /etc/dovecot/dovecot.conf
Amiben így kell kinéznie a két SSL-es sornak:
[...] ssl_cert = </etc/postfix/smtpd.cert ssl_key = </etc/postfix/smtpd.key [...]
Ha mégsem így nézne ki ez a két sor, akkor írjuk át erre, hogy bekerüljön a Dovecot is az SSL láncolásba.
Ezután indítsuk újra a dovecot-ot is:
service dovecot restart
PureFTPd
A PureFTPd-hez pedig az alábbi parancsok kellenek:
cd /etc/ssl/private/
mv pure-ftpd.pem pure-ftpd.pem-$(date +"%y%m%d%H%M%S").bak
ln -s /usr/local/ispconfig/interface/ssl/ispserver.pem pure-ftpd.pem
chmod 600 pure-ftpd.pem
service pure-ftpd-mysql restart
Monit
Ha pedig a Monit szerver statisztika is telepítésre került az elején, akkor ehhez pedig nyissuk meg a konfig fájlját:
nano /etc/monit/monitrc
És adjuk hozzá a pem fájlt, amit korábban átlinkeltünk (mondjuk a PureFTPd-hez készített megteszi):
[...] set httpd port 2812 and SSL ENABLE PEMFILE /etc/ssl/private/pure-ftpd.pem allow admin:'secretpassword' [...]
Majd indítsuk újra:
service monit restart
Auto megújítást elvégző script elkészítése az ISPConfig pem fájlja számára
Az ISPConfig3 nem újítja meg automatikusan a saját tanúsítványát, amivel magát a kezelőfelületet védjük le, és így az erre láncolt szolgáltatások tanúsítványai sem frissülnek. Ezért erről nekünk kell gondoskodnunk, hacsak nem szeretnénk rendszeresen figyelgetni a weboldalunkhoz kiállított Let’s Encrypt SSL automatikusan megújított fájljait.
Ehhez a művelethez az incron eseményfigyelő daemon-t fogjuk használni, ami lefuttatja helyettünk a scriptünket, amikor változás áll be a fájlrendszer megfigyelt részeiben. Ez esetben amikor a Let’s Encrypt ACME kliense, a Certbot megújítja nekünk a szerver elsődleges weboldalához használt SSL tanúsítványt. Ezzel levéve a terhet a vállunkról, mert nem kell többé figyelgetni hogy mikor frissülnek a .key és a .crt fájlok.
Ehhez először telepítsük az incron-t az apt-get paranccsal:
apt-get install -y incron
Ezután hozzunk létre egy indítófájlt a /etc/init.d könyvtárban:
nano /etc/init.d/le_ispc_pem.sh
És tegyük bele az alábbi tartalmat:
#!/bin/sh ### BEGIN INIT INFO # Provides: LE ISPSERVER.PEM AUTO UPDATER # Required-Start: $local_fs $network # Required-Stop: $local_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: LE ISPSERVER.PEM AUTO UPDATER # Description: Update ispserver.pem automatically after ISPC LE SSL certs are renewed. ### END INIT INFO cd /usr/local/ispconfig/interface/ssl/ if ls ispserver.*.bak 1> /dev/null 2>&1; then rm ispserver.*.bak; fi mv ispserver.pem ispserver.pem-$(date +"%y%m%d%H%M%S").bak cat ispserver.{key,crt} > ispserver.pem chmod 600 ispserver.pem chmod 600 /etc/ssl/private/pure-ftpd.pem scp ispserver.crt /etc/mysql/server-cert.pem scp ispserver.key /etc/mysql/server-key.pem service mysql restart service pure-ftpd-mysql restart if [ -d "/etc/monit" ]; then service monit restart; fi if [ -d "/etc/postfix" ]; then service postfix restart; service dovecot restart; fi service apache2 restart
Mentsük le az indítófájlt, majd tegyük futtathatóvá:
chmod +x /etc/init.d/le_ispc_pem.sh
Ezután adjuk hozzá a root felhasználót az incron jogosult felhasználói közé (mert enélkül a root sem használhatja):
echo "root" >> /etc/incron.allow
Majd az incrontab paranccsal szerkesszük az incrontab-ot:
incrontab -e
Tegyük bele az alábbi sort:
/etc/letsencrypt/archive/$(hostname -f)/ IN_CREATE, IN_MODIFY ./etc/init.d/le_ispc_pem.sh
Ha mindezzel megvagyunk, mentsük le, majd indítsuk újra az Apache-t:
service apache2 restart
Opcionális
Az oldalunk most elérhető a https://mx.zsoltina.eu:8080 címen. De a domain_név maga a /var/www/html könyvtár tartalomra mutat, ami a 000-default.conf Apache konfigurációban van megadva. (Természetesen a beállításoknál te a saját domain neved használd.) Ezért érdemes átirányítani az ide jövő kéréseket az ssl titkosított oldalra. Talán a legegyszerűbb egy html átirányítás:
nano /var/www/html/index.html
Majd adjuk hozzá a következőket:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <meta http-equiv="Refresh" content="0;URL=https://mx.zsoltina.eu:8080" /> </head> <body> </body> </html>
Továbbá én az ISPConfig felületén készítettem egy weboldalt isp.zsoltina.eu néven, amit átirányítottam a https://mx.zsoltina.eu:8080 oldalra. Az átírányítás R=301,L típusú, az útvonal maga az url, SEO átirányítás nincs.
Konklúzió
Ezzel az átláncolási módszerrel tehát elértük, hogy az ISPConfig3 kezelőpanelünk és a különböző szerver szolgáltatásaink is folyamatosan részesülnek az automatikusan megújuló Let’s Encrypt SSL tanúsítványokból.
Arra kell még figyelni, hogy ha kívülről használjuk ezeket a szolgáltatásokat (FTP, IMAP, stb), akkor mindig a szerver fő domain nevét adjuk meg hosztnévnek ezekben a szolgáltatásokban, mivel erre a domain névre lett kiállítva az SSL tanúsítvány. Így például ha a szerveren működő weboldalak FTP, IMAP, stb hozzáféréseinél nem a szerver fő domain nevét adjuk meg, hanem az adott weboldalét, akkor a csatlakozó kliensprogram SSL hibát fog jelezni, mivel nem azzal a domain névvel történt a csatlakozás, mint amire a tanúsítvány ki lett állítva.
Mindezt csak azért írom le, mert ha például ügyfeleknek adunk ki tárhelyeket, akkor jelezni kell ezt nekik is, hogy melyik domain névvel tudnak hiba nélkül SSL-en keresztül csatlakozni ezekhez a protokollokhoz.