Přeskočit na obsah Přeskočit na hlavní navigaci Přeskočit na zápatí (patičku)

Certifikáty

Pro správné vygenerování a získání SSL certifikátu je nutné splnit několik předpokladů a provést konfiguraci v několika částech a konfiguračních souborech systému.

Certifikáty jsou vystavovány certifikační autoritou Let’s Encrypt.

Let’s Encrypt je certifikační autorita (CA) poskytující SSL/TLS certifikáty zdarma. Certifikáty jsou vystavovány na 3 měsíce a po této (do té doby) je nutná jejich obnova (ručně-automaticky). Požadavek na získání certifikátu může přijít pouze ze serveru, na který je směrované příslušné doménové jméno (kontrola pomocí DNS).

DOPORUČENÍ
Problémy s automatickým obnovením certifikátů (HTTP-01 challenge) jsou obvykle způsobeny blokováním portu 80 na firewallu.
HTTP-01 challenge může být provedena pouze na portu 80. Povolit klientům specifikovat libovolné porty by snížilo zabezpečení a proto není standartem ACME povoleno.
https://letsencrypt.org/docs/allow-port-80/

Základní nastavení a předpoklady

  • správně nastavené DNS záznamy pro Administrační rozhraní, Portál klienta a případně i Portál dealera.
  • potřeba mít v Nastavení / Syst. nastavení / Zabezpečení povolené porty HTTP (80) a HTTPS (443).
  • nezbytné v konfiguraci web serveru Apache2 nastavit pro každou doménu ServerName.
nano /etc/apache2/sites-available/ispadmin.conf

Administrační rozhraní

### ISP admin#
<VirtualHost *:80>
  ServerName admin.mydomain.tld
  DocumentRoot "/data/support_nossl/"
 <Directory /data/support_nossl/>
    Options FollowSymLinks MultiViews
    AllowOverride all
    Require all granted
</Directory>

</VirtualHost>

## ISP Admin SSL
<VirtualHost *:443>
  ServerName admin.mydomain.tld
  DocumentRoot "/data/support/ispadmin/new/www/"
  AddDefaultCharset UTF-8
   <Directory /data/support/ispadmin/new/www/>
    Options +ExecCGI
    Options FollowSymLinks MultiViews
    AllowOverride all
    Require all granted
  </Directory>
  CustomLog /var/log/apache2/access_support_ispadmin.log combined
  AddType application/x-httpd-php .php

  SSLEngine on
  SSLCertificateFile /etc/apache2/certs/ispadmin.eu/ispadmin.crt
  SSLCertificateKeyFile /etc/apache2/certs/ispadmin.eu/private.key
 # SSLCertificateChainFile /etc/apache2/certs/ispadmin.eu/ca.pem
</VirtualHost>

Portál klienta

## ISP CP
<VirtualHost *:80>

  DocumentRoot "/data/support/ispadmin/new/www/clientinterface"
  ServerName clientportal.mydomain.tld

  AddDefaultCharset UTF-8
  <Directory /data/support/ispadmin/new/www/clientinterface>
    Options ExecCGI
    Options FollowSymLinks MultiViews
    AllowOverride all
    Require all granted

  </Directory>
  CustomLog /var/log/apache2/access_support_ispadmin_support.log combined
  AddType application/x-httpd-php .php

#  SSLEngine on
#  SSLCertificateFile /etc/apache2/certs/ispadmin.eu/ispadmin.crt
#  SSLCertificateKeyFile /etc/apache2/certs/ispadmin.eu/private.key
#  SSLCertificateChainFile /etc/apache2/certs/ispadmin.eu/ca.pem

</VirtualHost>

Portál dealera

## ISP partner
<VirtualHost *:80>

  DocumentRoot "/data/support/ispadmin/new/www/partner/"
  ServerName dealerportal.mydomain.tld

  AddDefaultCharset UTF-8
  <Directory /data/support/ispadmin/new/www/partner/>
    Options ExecCGI
    Options FollowSymLinks MultiViews
    AllowOverride all
    Require all granted

  </Directory>
  CustomLog /var/log/apache2/access_support_ispadmin_support.log combined
  AddType application/x-httpd-php .php

#  SSLEngine on
#  SSLCertificateFile /etc/apache2/certs/ispadmin.eu/ispadmin.crt
#  SSLCertificateKeyFile /etc/apache2/certs/ispadmin.eu/private.key
#  SSLCertificateChainFile /etc/apache2/certs/ispadmin.eu/ca.pem

</VirtualHost>

Vytvoření certifikátu pro portál dealera

/data/ispadmin_cert/acme/acme.sh --issue --certhome /data/ispadmin_cert -d subdomena.portalu.tld -w /data/support/ispadmin/new/www/partner/
  • Po nastavení můžete konfiguraci zkontrolovat následujícím příkazem:
apachectl configtest
  • Pokud je konfigurace v pořádku (bez překlepů), můžete Apache restartovat:
systemctl restart apache2
  • Pokud je vše správně nastavené, mělo by se vám v prohlížeči na nastavených doménových jménech, zobrazit jak Administrační rozhraní, Portál klienta, tak i Portál dealera. Zatím se však bude zobrazovat i upozornění na certifikát.

Vlastní instalace certifikátů

  • Instalaci certifikátů provedete příkazem:
/usr/local/script/ispadmin/bin/certificate.pl
  • Zadáte DNS záznamy pro Administrační rozhraní a Portál klienta.
  • Zkontrolujete, zda vypsané IP adresy odpovídají IP adrese serveru.
  • Pokud nesouhlasí, tak je zapotřebí DNS záznamy opravit. Ve skriptu vyberete volbu n a skript spustíte znovu.
  • Pokud je vše v pořádku, vytvoří se požadované certifikáty.
  • V této fázi se vás skript zeptá, jestli chcete vytvořené certifikáty nainstalovat na Apache server.
  • Pokud nemáte na Apache serveru provedeny žádné změny (vlastní konfigurace), zvolíte možnost y.
  • Pokud chcete z jakýchkoliv důvodů certifikáty nakopírovat ručně, vidíte před sebou 3 umístění, kde se jednotlivé části nacházejí. Stiskněte n a certifikáty si ručně nastavte v /etc/apache2/sites-available/ispadmin.conf.
  • Pokud jste vybrali y, provedla se instalace certifikátů. Zároveň byla provedena záloha konfigurace Apache a restart Apache serveru.
  • Nyní jsou certifikáty platné a v prohlížeči se zobrazí https.
  • Pokud je vše správně nastaveno, tak jsou certifikáty každé 3 měsíce automaticky obnovovány.

Selhání automatické obnovy certifikátů

Pokud se neprovedla automatická obnova certifikátů, zkontrolujte si následující:

  • Je Apache na standardních portech?
  • Je povolen globální přístup z internetu na http a https?
  • Je server trvale online?
  • Je v /etc/crontab následující řádek?
00 05 * * 7     root    /data/ispadmin_cert/acme/acme.sh --apache --renewAll --home /data/ispadmin_cert/acme --certhome /data/ispadmin_cert #letsencrypt renew

V případě, že automatická obnova selhala opakovaně, zkuste aktualizovat utilitu acme:

/data/ispadmin_cert/acme/acme.sh --upgrade 

Následně proveďte manuální obnovu certifikátů.

Pokud i toto selže, zkuste přeinstalovat utilitu acme:

rm -r /root/.acme.sh
rm -r /root/acme.sh
rm -r /data/ispadmin_cert/acme

Následně spusťte instalaci certifikátů:

/usr/local/script/ispadmin/bin/certificate.pl

Manuální obnova certifikátů

  • Ruční obnova:
/data/ispadmin_cert/acme/acme.sh --apache --renewAll --home  /data/ispadmin_cert/acme --certhome /data/ispadmin_cert
  • Vynucená ruční obnova:
/data/ispadmin_cert/acme/acme.sh --apache --renewAll  --home /data/ispadmin_cert/acme --certhome /data/ispadmin_cert --force