Konfigurace připojení SSL (Secure Sockets Layer) vám umožní přidat další asymetrický šifrovací protokol k běžnému HTTP. Protokol SSL může být užitečný k posílení buď autentizačního systému webu nebo výměny dat mezi aplikací a serverem. V této příručce uvidíte, jak nakonfigurovat připojení SSL a povolit HTTPS na Apache s Ubuntu 18.04.
Nejprve se připojte k serveru prostřednictvím připojení SSH. Pokud jste tak ještě neučinili, doporučujeme se podle našeho průvodce bezpečně připojit pomocí protokolu SSH. V případě lokálního serveru přejděte k dalšímu kroku a otevřete terminál svého serveru.
Získání certifikátu SSL
K vytvoření zabezpečeného připojení bude Apache potřebovat certifikát SSL, který lze získat od certifikační autority (CA). Pro usnadnění v tomto příkladu použijeme certifikát s vlastním podpisem nebo certifikát s vlastním podpisem, který se používá pouze v testovacích a vývojových prostředích. Chcete-li získat certifikát s vlastním podpisem, přečtěte si naši příručku Vytvoření certifikátu SSL s vlastním podpisem.
Pokud máte zájem o bezplatný certifikát SSL vydaný certifikační autoritou, postupujte podle našeho průvodce Jak zabezpečit Apache pomocí Let's Encrypt a Ubuntu 18.04.
Důležitá poznámka:
Během vytváření certifikátu zadejte IP adresu vašeho serveru nebo název domény, když budete požádáni o Common Name:
Common Name (e.g. server FQDN or YOUR name) []: domain.com
Po získání certifikátu vytvořte složku /etc/certificate:
$ sudo mkdir /etc/certificate
Pak do něj uložte certifikát i soukromý klíč.
Konfigurace parametrů Apache SSL
Pokračujte nastavením direktiv pro zabezpečené připojení, které Apache vytvoří. Chcete-li to provést, vytvořte soubor ssl-params.conf v adresáři Apache conf-available:
$ sudo nano /etc/apache2/conf-available/ssl-params.conf
Do nově vytvořeného souboru vložte následující základní konfiguraci:
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
# Requires Apache >= 2.4
SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
# Requires Apache >= 2.4.11
SSLSessionTickets Off
Potom soubor uložte a zavřete.
Jak změnit virtuálního hostitele
Potom upravte konfiguraci SSL virtuálního hostitele domény, kterou chcete chránit připojením SSL. V tomto tutoriálu bude jako příklad použita konfigurace SSL výchozího virtuálního hostitele Apache.
Otevřete konfiguraci SSL virtuálního hostitele:
$ sudo nano /etc/apache2/sites-available/default-ssl.conf
Naleznete soubor s následující strukturou:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin [email protected]
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
Nastavte správně direktivu ServerAdmin zadáním svého e-mailu a přidejte direktivu ServerName následovanou vaší doménou nebo IP adresou vašeho serveru.
Nakonec změňte cestu označenou direktivami SSLCertificateFile a SSLCertificateKeyFile a zadejte cestu svého certifikátu a soukromého klíče.
Dostanete výsledek podobný následujícímu:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin [email protected]
ServerName mydomain.com
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/certificate/certificate.crt
SSLCertificateKeyFile /etc/certificate/private.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
Potom soubor uložte a zavřete.
Jak nakonfigurovat bránu firewall
V případě brány firewall ve vašem systému ji nastavte tak, aby povolovala provoz HTTP a HTTPS pro váš počítač.
Při použití brány firewall UFW jsou k dispozici některé předinstalované profily pro Apache. Pojďme se tedy podívat, jak je povolit.
Chcete-li zkontrolovat dostupné profily nainstalované v UFW firewallu, spusťte tento příkaz:
$ sudo ufw app list
Na obrazovce se zobrazí seznam podobný následujícímu:
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
Chcete-li povolit provoz HTTP (Port 80) a HTTPS (Port 443), použijte profil "Apache Full".
Zkontrolujte informace o profilu následovně:
$ sudo ufw app info "Apache Full"
Zobrazí se popis profilu obrazovky:
Profile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.
Ports:
80,443/tcp
Po ověření profilu jej povolte:
$ sudo ufw allow in "Apache Full"
Jak nakonfigurovat Apache
V tomto okamžiku lze provést změny konfigurace Apache.
Povolte moduly mod_ssl a mod_headers:
$ sudo a2enmod ssl
$ sudo a2enmod headers
Povolit čtení dříve vytvořené konfigurace SSL:
$ sudo a2enconf ssl-params
Povolit výchozí virtuální hostitel SSL:
$ sudo a2ensite default-ssl
Zkontrolujte, zda jste v konfiguračních souborech Apache neudělali syntaktické chyby:
$ sudo apache2ctl configtest
Pokud se na obrazovce objeví zpráva "Syntaxe OK", pokračujte restartováním Apache:
$ sudo systemctl restart apache2
Jak zkontrolovat zabezpečené připojení
Otevřete svůj prohlížeč připojením k doméně nebo IP adrese virtuálního hostitele, který jste nakonfigurovali, a ujistěte se, že používáte protokol https
https://mydomain.com