Vyhledávání na webu

Jak zabezpečit Apache pomocí SSL a Let’s Encrypt ve FreeBSD


V tomto tutoriálu se naučíme, jak zabezpečit Apache HTTP server pomocí TLS/SSL certifikátů nabízených Let's Encrypt v FreeBSD 11. x. Probereme také, jak automatizovat proces obnovy certifikátu pro Lets’ Encrypt.

Čtěte také: Nainstalujte Let’s Encrypt for Nginx na FreeBSD

Certifikáty TLS/SSL používá webový server Apache k šifrování komunikace mezi koncovými uzly nebo obvykleji mezi serverem a klientem za účelem zajištění bezpečnosti. Let’s Encrypt poskytuje nástroj příkazového řádku certbot, což je aplikace, která může usnadnit způsob, jak získat důvěryhodné certifikáty zdarma.

Požadavky:

  1. Instalace FreeBSD 11.x
  2. 10 věcí, které je třeba udělat po instalaci FreeBSD
  3. Jak nainstalovat Apache, MariaDB a PHP ve FreeBSD

Krok 1: Nakonfigurujte Apache SSL na FreeBSD

1. Před zahájením instalace nástroje certbot a vytvoření konfiguračního souboru TSL pro Apache nejprve vytvořte dva odlišné adresáře s názvem sites-available a sites-enabled v kořenovém konfiguračním adresáři Apache zadáním níže uvedených příkazů.

Účelem těchto dvou adresářů je usnadnit správu konfigurace virtuálního hostingu v systému bez úpravy hlavního konfiguračního souboru Apache httpd.conf pokaždé, když přidáme nového virtuálního hostitele.

mkdir /usr/local/etc/apache24/sites-available
mkdir /usr/local/etc/apache24/sites-enabled

2. Po vytvoření obou adresářů otevřete soubor Apache httpd.conf pomocí textového editoru a na konec souboru přidejte následující řádek, jak je znázorněno níže.

nano /usr/local/etc/apache24/httpd.conf

Přidejte následující řádek:

IncludeOptional etc/apache24/sites-enabled/*.conf

3. Dále povolte modul TLS pro Apache vytvořením následujícího nového souboru s názvem 020_mod_ssl.conf v modules.d< adresář s následujícím obsahem.

nano /usr/local/etc/apache24/modules.d/020_mod_ssl.conf

Přidejte následující řádky do souboru 020_mod_ssl.conf.

Listen 443
SSLProtocol ALL -SSLv2 -SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLPassPhraseDialog  builtin
SSLSessionCacheTimeout  300

4. Nyní odkomentujte modul SSL ze souboru /usr/local/etc/apache24/httpd.conf odstraněním hashtagu od začátku z následujícího řádku, jak je znázorněno níže:

LoadModule ssl_module libexec/apache24/mod_ssl.so

5. Dále vytvořte konfigurační soubor TLS pro vaši doménu v adresáři sites-available, nejlépe s názvem vaší domény, jak je uvedeno v níže uvedený úryvek:

nano /usr/local/etc/apache24/sites-available/bsd.lan-ssl.conf

Přidejte následující konfiguraci virtuálního hostitele do souboru bsd.lan-ssl.conf.

<VirtualHost *:443>
    ServerName www.yourdomain.com
	ServerAlias yourdomain.com
                DocumentRoot "/usr/local/www/apache24/data/"
	SSLEngine on

	SSLCertificateFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/cert.pem"
	SSLCertificateKeyFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/privkey.pem"
	SSLCertificateChainFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/fullchain.pem"

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>

<Directory "/usr/local/www/apache24/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

	BrowserMatch "MSIE [2-5]" \
        nokeepalive ssl-unclean-shutdown \
        downgrade-1.0 force-response-1.0

	CustomLog "/var/log/apache/httpd-ssl_request.log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

	<Directory "/usr/local/www/apache24/data/">
            Options Indexes FollowSymLinks MultiViews
        #AllowOverride controls what directives may be placed in .htaccess files.       
                        AllowOverride All
        #Controls who can get stuff from this server file
                        Require all granted
        </Directory>
       
    ErrorLog "/var/log/apache/yourdomain.ssl-error.log"
    CustomLog "/var/log/apache/yourdomain.ssl-access_log" combined

</VirtualHost>

Ujistěte se, že jste odpovídajícím způsobem nahradili proměnnou názvu domény z příkazů ServerName, ServerAlias, ErrorLog, CustomLog.

Krok 2: Nainstalujte Lets’Encrypt na FreeBSD

6. V dalším kroku zadejte následující příkaz, abyste nainstalovali nástroj certbot poskytovaný Let's Encrypt, který bude použit k získání Apache TSLbezplatné certifikáty pro vaši doménu.

Při instalaci certbota se na obrazovce zobrazí řada výzev. Pomocí níže uvedeného snímku obrazovky nakonfigurujte nástroj certbot. Také kompilace a instalace obslužného programu certbot může nějakou dobu trvat, v závislosti na prostředcích vašeho počítače.

cd /usr/ports/security/py-certbot
make install clean

7. Po dokončení procesu kompilace zadejte níže uvedený příkaz, abyste aktualizovali obslužný program certbot a požadované závislosti certbot.

pkg install py27-certbot
pkg install py27-acme

8. Chcete-li vygenerovat certifikát pro vaši doménu, zadejte příkaz, jak je znázorněno níže. Ujistěte se, že zadáváte správné umístění webroot, kde jsou soubory vašich webových stránek uloženy v systému souborů (direktiva DocumentRoot z konfiguračního souboru domény) pomocí příznaku -w. Pokud máte více subdomén, přidejte je všechny s příznakem -d.

certbot certonly --webroot -w /usr/local/www/apache24/data/ -d yourdomain.com -d www.yourdomain.com

Při získávání certifikátu zadejte e-mailovou adresu pro obnovení certifikátu, stiskněte a pro souhlas s podmínkami Let's Encrypt a n pro nesdílení e-mailové adresy partnerům Let's Encrypt.

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):[email 
There seem to be problems with that address. Enter email address (used for
urgent renewal and security notices)  If you really want to skip this, you can
run the client with --register-unsafely-without-email but make sure you then
backup your account key from /etc/letsencrypt/accounts   (Enter 'c' to cancel):[email 

-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. You must agree
in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: a ------------------------------------------------------------------------------- Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about EFF and our work to encrypt the web, protect its users and defend digital rights. ------------------------------------------------------------------------------- (Y)es/(N)o: n Obtaining a new certificate Performing the following challenges: http-01 challenge for www.domain.com Using the webroot path /usr/local/www/apache24/data for all unmatched domains. Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /usr/local/etc/letsencrypt/live/www.yourdomain.com/fullchain.pem. Your cert will expire on 2017-11-15. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /usr/local/etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le

9. Poté, co získáte certifikáty pro svou doménu, můžete spustit příkaz ls, abyste vypsali všechny součásti certifikátu (řetěz, soukromý klíč, certifikát), jak je uvedeno v níže uvedeném příkladu.

ls -al /usr/local/etc/letsencrypt/live/www.yourdomain.com/

Krok 3: Aktualizujte certifikáty Apache TLS na FreeBSD

10. Chcete-li na svůj web přidat certifikáty Let’s Encrypt, otevřete konfigurační soubor Apache pro vaši doménu a aktualizujte následující řádky, aby odrážely cestu k vydaným certifikátům.

nano /usr/local/etc/apache24/sites-available/bsd.lan-ssl.conf

Přidejte tyto řádky certifikátu TLS:

SSLCertificateFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/cert.pem"
	SSLCertificateKeyFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/privkey.pem"
	SSLCertificateChainFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/fullchain.pem"

11. Nakonec povolte konfigurační soubor TLS vytvořením symbolického odkazu pro konfigurační soubor TLS vaší domény do adresáře sites-enabled, zkontrolujte konfigurace Apache, zda neobsahují chyby syntaxe, a pokud syntaxe je v pořádku, restartujte démona Apache zadáním níže uvedených příkazů.

ln -sf /usr/local/etc/apache24/sites-available/bsd.lan-ssl.conf /usr/local/etc/apache24/sites-enabled/
apachectl -t
service apache24 restart

12. Chcete-li zkontrolovat, zda služba Apache naslouchá na HTTPS portu 443, zadejte následující příkaz pro výpis síťových soketů httpd.

sockstat -4 | grep httpd

13. Na adresu své domény můžete přejít z prohlížeče prostřednictvím protokolu HTTPS, abyste si ověřili, že certifikáty Let’s Encrypt byly úspěšně použity.

https://www.yourdomain.com

14. Chcete-li získat další informace o vydaném certifikátu Let’s Encrypt z příkazového řádku, použijte příkaz openssl následovně.

openssl s_client -connect www.yourdomain.com:443

15. Můžete také ověřit, zda je provoz šifrován pomocí platného certifikátu poskytnutého Let’s Encrypt CA z mobilního zařízení, jak je znázorněno na níže uvedeném snímku mobilní obrazovky.

To je vše! Klienti nyní mohou bezpečně navštěvovat váš web, protože provoz, který proudí mezi serverem a prohlížečem klienta, je šifrován. Pro složitější úlohy týkající se utility certbot navštivte následující odkaz: https://certbot.eff.org/