Instalace SSL certifiátu pro administraci ISPConfig v Debian 8

Návod jak zabezpečit ISPConfig administraci VPS serveru na Debian 8 pomocí Let's Encrypt certifikátu.

Základem u VPS serveru je mít správně nastavenou identifikaci stroje prostřednictvím hostname. V ISPConfig je nutné nastavit primární hostname prostřednitvím volby System>Server Config a v kolonce Hostname uvést konkrétní doménu, která bude pro server idetifikační. V našem případě použijeme fiktivní example.com.

Předpoklady pro správnou funkčnost

  1. ISPConfig musí být dostupný přes IP adresu serveru - je nutné ověřit, zda po zadání adresy https://xxx.xxx.xxx.xxx:8080 se skutečně zobrazí přihlašovací obrazovka ISPConfig.
  2. ISPConfig musí být nastaven v režimu dostupnosti SSL. Pokud není, je nutné spustit ispconfig_update.sh a volbu SSL povolit.
  3. Primární adresa serveru - example.com musí mít DNS A záznamy totožné s IP adresou serveru.

Pokud je vše splněno, můžeme přistoupit k nastavení.

1.Vytvoření primární SITE serveru

V administraci ISPConfig vytvořte novou stránku přes Sites>Add new website. Ta se musí shodovat s hostname serveru (example.com). Při vytváření je nutné zaškrtnout volbu SSL a Let's Encrypt SSL.

ISPConfig vygeneruje certifikát pro primární doménu a ta by měla být korektně dostupná pod adresou https://www.example.com

2. Nastavení certifikátů pro Let's Encrypt

V tomto kroku "podsuneme" certifikáty vygenerované pro primární doménu example.com administraci ISPConfig. Přihlásíme se tedy k serveru přes SSH a provedeme zálohu stávajících certifikátu, které ISPConfig používá.

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
if [ -f "ispserver.pem" ]; then
    mv ispserver.pem ispserver.pem-$(date +"%y%m%d%H%M%S").bak
fi

Výsledkem tedy jsou zálohy stávajících certifikátů s příponou bak.

Nyní vytvoříme odkazy na existující certifikáty pro doménu example.com

ln -s /etc/letsencrypt/live/example.com/fullchain.pem ispserver.crt 
ln -s /etc/letsencrypt/live/example.com/privkey.pem ispserver.key 
cat ispserver.{key,crt} > ispserver.pem 
​chmod 600 ispserver.pem

V poslední fázi stačí restartovat Apache:

service apache2 restart

V tuto chvíli by měla být administrace ISPConfig dostupná pod adresou https://example.com:8080 v zabezpečeném režimu.

Uvedený návod jsem úspěšně použil na mimo jiné také na VPS serverech WEDOS.

Problémy se SSL certifikátem

Může se stát, že doména, která je aliasovaná k cetifikátu expiruje nebo se z nějakého důvodu změní DNS A záznamy a Certbot pak není schopen vygenerovat nový certifikát.

Začneme problém lokalizovat přímo od zdroje, což je /etc/apache2/sites-enabled kde jsou vhosts konfigurace domény. V souboru / souborech *.vhost je tedy uvedeno, kde certifikát najdeme na disku serveru. Díky tomu zjistíme, že položka SSLCertificateFile nastavuje cestu k certifikátu a tuto musíme zkontrolovat, zda na jejím konci je opravdu platný nově vygenerovaný certifikát.

Zkontrolujeme kam směřují symlinky ve složce /var/www/domena.tld/ssl/ a to konkrétně symlinky pro sobory:

  • domena.tld-le.crt
  • domena.tld-le.key
  • domena.tld-le.bundle

Většinou směřují do složky /etc/letsencrypt/live/domena.tld-XXX/ jako odkaz na další symlink, který je nutné opět zkontrolovat. Většinou směřuje do ../../archive/domena.tld-XXX/. 

* XXX je číslo 001 002 nebo 007, podle toho kolik generování proběhlo

Obecně jde o to, že se mi někdy stane, že automaticky generované certifikáty nastaví symlinky na chybný (starý) adresář, přesto že nový certifikát byl vygenerován s novým číslem v novém adresáři.

Většinou stačí opravit symlinky přímo v /var/www/vasedomena.tld/ssl/ a nasměrovat je na nejnovější adresář v /etc/letsencrypt/live/domena.tld-XXX/. Po opravě symlinků je nutné restartovat apache.

service apache2 restart