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 (CA) Let’s Encrypt, která poskytuje SSL/TLS certifikáty zdarma.

Certifikáty jsou vystavovány na 3 měsíce a 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).

Chcete-li požádat o certifikát certifikační autoritu Let’s Encrypt (nebo jinou), je nutné poskytnout určitý druh důkazu, že jste oprávněným nárokujícím k získání certifikátu pro danou doménu (domény).

Aktuálně je systémem podporováno automatické obnovení metodou HTTP-01 (ověření přes http).

DOPORUČENÍ
Problémy s automatickým obnovením certifikátů (HTTP-01 challenge) jsou obvykle způsobeny blokováním portu 80 a 443 na firewallu.
Validace pomocí metody HTTP-01 challenge může být provedena pouze na portu 80. Dovolit 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í

  • 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) nebo na externím FW.
  • nezbytné v konfiguraci web serveru Apache nastavit pro každou doménu ServerName.

Konfigurace serveru

Návody a postupy na konfiguraci HTTP Apache serveru pro nastavení přístupu do jednotlivých částí systému (uživatelské rozhraní, portál klienta, portál dealera).

Uživatelské rozhraní

Rozhraní pro uživatele/administrátory systému ISPadmin.

Část konfigurace pro uživatelské rozhraní v konfiguračním souboru ispadmin.conf.

nano /etc/apache2/sites-available/ispadmin.conf
### 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>
  • zkontrolovat, zda-li je konfigurační soubor validní (syntax) příkazem:
apachectl configtest
  • pokud se neobjeví chyba a kontrola správnosti syntaxe proběhne v pořádku, je potřeba systémem znovu načíst (aplikovat) nově upravené konfigurační soubory:
systemctl reload apache2

Portál klienta

Rozhraní pro klienty (koncové zákazníky) – portál klienta.

Část konfigurace pro rozhraní klientů v konfiguračním souboru ispadmin.conf.

nano /etc/apache2/sites-available/ispadmin.conf
## ISP CP

<VirtualHost *:81>
  Protocols h2 h2c http/1.1
  ServerName clientportal.mydomain.tld
  DocumentRoot "/data/support/ispadmin/new/www/clientinterface"
 <Directory /data/support_nossl/>
    Options FollowSymLinks MultiViews
    AllowOverride all
    Require all granted
</Directory>
</VirtualHost>

## ISP CP SSL

<VirtualHost *:443>
  Protocols h2 h2c http/1.1
  ServerName clientportal.mydomain.tld
  DocumentRoot "/data/support/ispadmin/new/www/clientinterface"
  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.log combined
  AddType application/x-httpd-php .php

 SSLEngine on
 SSLCertificateFile /data/ispadmin_cert/clientportal.mydomain.tld/clientportal.mydomain.tld.cer
 SSLCertificateKeyFile /data/ispadmin_cert/clientportal.mydomain.tld/clientportal.mydomain.tld.key
 SSLCertificateChainFile /data/ispadmin_cert/clientportal.mydomain.tld/fullchain.cer
</VirtualHost>
  • zkontrolovat, zda-li je konfigurační soubor validní (syntax) příkazem:
apachectl configtest
  • pokud se neobjeví chyba a kontrola správnosti syntaxe proběhne v pořádku, je potřeba systémem znovu načíst (aplikovat) nově upravené konfigurační soubory:
systemctl reload apache2

Portál dealera

  • pokud neexistuje soubor, tak je potřeba jej vytvořit:
/etc/apache2/sistes-available/dealer.conf
  • vložit do něj obsah a nahradit všechny výskyty zástupného řetězce (dealerportal.mydomain.tld) skutečným doménovým jménem (subdoménou).
  • editace souboru příkazem:
nano /etc/apache2/sites-available/dealer.conf
  • vložit do něj obsah:
## ISP partner

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

<VirtualHost *:80>
  Protocols h2 h2c http/1.1
  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 /data/ispadmin_cert/dealerportal.mydomain.tld/dealerportal.mydomain.tld.cer
# SSLCertificateKeyFile /data/ispadmin_cert/dealerportal.mydomain.tld/dealerportal.mydomain.tld.key
# SSLCertificateChainFile /data/ispadmin_cert/dealerportal.mydomain.tld/fullchain.cer

</VirtualHost>
  • povolit portál dealera v konfiguraci Apache. Tím se vytvoří symlink do složky /etc/apache2/sites-enabled:
a2ensite dealer
  • zkontrolovat, zda-li je konfigurační soubor validní (syntax) příkazem:
apachectl configtest
  • pokud se neobjeví chyba a kontrola správnosti syntaxe proběhne v pořádku, je potřeba systémem znovu načíst (aplikovat) nově upravené konfigurační soubory:
systemctl reload apache2
  • vygenerovat certifikáty pro portál dealera:
/data/ispadmin_cert/acme/acme.sh --issue --certhome /data/ispadmin_cert -d dealerportal.mydomain.tld -w /data/support/ispadmin/new/www/partner/
  • pokud je vše v pořádku je potřeba upravit konfiguraci apache a povolit použití certifikátů.
  • editace konfiguračního souboru:
nano /etc/apache2/sites-available/dealer.conf
  • úpravy v souboru:
    • v souboru odkomentovat sekci prvního virtualhostu (odmazat #)
    • upravit port u druhé sekce virtualhostu na 443
    • odkomentovat v druhém virtualhostu sekci s certifikáty (4 řádky na konci odmazat počáteční #)
  • výsledek po úpravě:
## ISP partner

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

<VirtualHost *:443>
  Protocols h2 h2c http/1.1
  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 /data/ispadmin_cert/dealerportal.mydomain.tld/dealerportal.mydomain.tld.cer
 SSLCertificateKeyFile /data/ispadmin_cert/dealerportal.mydomain.tld/dealerportal.mydomain.tld.key
 SSLCertificateChainFile /data/ispadmin_cert/dealerportal.mydomain.tld/fullchain.cer

</VirtualHost>
  • opět zkontrolovat, zda-li je konfigurační soubor validní (syntax) příkazem:
apachectl configtest
  • pokud se neobjeví chyba a kontrola správnosti syntaxe proběhne v pořádku, je potřeba systémem znovu načíst (aplikovat) nově upravené konfigurační soubory:
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.

Správa certifikátů

Instalace

  • Instalaci certifikátů je možné provést příkazem:
/usr/local/script/ispadmin/bin/certificate.pl
  • Zadat DNS záznamy pro Administrační rozhraní a Portál klienta.
  • Zkontrolovat, zda vypsané IP adresy odpovídají IP adrese serveru.
  • Pokud nesouhlasí, tak je potřeba DNS záznamy opravit. Ve skriptu vybrat volbu n a skript spustit 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.

Automatická obnova

Pokud nedošlo k automatické obnově certifikátů je potřeba zkontrolovat:

  • Je HTTP server Apache na standardních (výchozích) portech?
  • Je povolen globální přístup z internetu na HTTP (80) a HTTPS (443)?
  • Je server nepřetržitě online? Nedošlo k výpadku?
  • Je v CRONu (/etc/crontab) řá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ě, je možné vyzkoušet aktualizovat utilitu ACME:

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

Následně provést 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

Pokud dojde k příliš mnoha neúspěšným pokusům o obnovu (např. z důvodu stále zablokovaného portu 80) objeví se error:

error creating new order :: too many failed authorizations recently

Limit je 5 neúspěšných pokusů na účet, hostname a hodinu. Více informací na webu Let’s Encrypt.

  • 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