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