GNU/Linux >> Znalost Linux >  >> Linux

Jak zabezpečit připojení SSL s Apache na Ubuntu 18.04

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

Linux
  1. Jak zabezpečit Nginx pomocí Letsencrypt na Ubuntu 20.04

  2. Jak zabezpečit vsFTPd pomocí SSL/TLS

  3. Jak povolit protokol HTTPS s Apache 2 na Ubuntu 20.04

  1. Jak nainstalovat Apache na Ubuntu?

  2. Jak zabezpečit Apache pomocí Lets Encrypt na Ubuntu 18.04

  3. Jak nainstalovat PHP-FPM s Apache na Ubuntu 22.04

  1. Jak nainstalovat a zabezpečit phpMyAdmin pomocí Apache na Ubuntu 18.04

  2. Zabezpečte Apache pomocí Lets Encrypt na Ubuntu 20.04

  3. Jak nainstalovat Elasticsearch na Ubuntu 22.04 s SSL