Kako osigurati Apache sa SSL-om i šifrirati u FreeBSD-u


U ovom vodiču ćemo naučiti kako osigurati Apache HTTP server sa TLS/SSL certifikatima koje nudi Let's Encrypt u FreeBSD 11. x. Također ćemo pokriti kako automatizirati proces obnove certifikata za Lets’ Encrypt.

Pročitajte također: Instalirajte Let’s Encrypt za Nginx na FreeBSD

TLS/SSL certifikate koristi Apache web server za šifriranje komunikacije između krajnjih čvorova, ili uobičajenije između servera i klijenta kako bi se osigurala sigurnost. Let’s Encrypt pruža certbot uslužni program komandne linije, koji je aplikacija koja može olakšati način na koji možete besplatno dobiti pouzdane certifikate.

Zahtjevi:

  1. Instalacija FreeBSD 11.x
  2. 10 stvari koje treba uraditi nakon instalacije FreeBSD-a
  3. Kako instalirati Apache, MariaDB i PHP u FreeBSD

Korak 1: Konfigurišite Apache SSL na FreeBSD-u

1. Prije nego počnete instalirati uslužni program certbot i kreirati TSL konfiguracijski fajl za Apache, prvo kreirajte dva različita direktorija pod nazivom sites-available i sites-enabled u Apache root konfiguracijskom direktoriju izdavanjem naredbi ispod.

Svrha ova dva direktorija je da olakšaju upravljanje konfiguracijom virtuelnog hostinga u sistemu, bez modifikacije glavnog Apache httpd.conf konfiguracionog fajla svaki put kada dodamo novi virtuelni host.

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

2. Nakon što ste kreirali oba direktorija, otvorite Apache httpd.conf datoteku u uređivaču teksta i dodajte sljedeći red blizu kraja datoteke kao što je prikazano ispod.

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

Dodajte sljedeću liniju:

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

3. Zatim omogućite TLS modul za Apache kreiranjem sljedećeg novog fajla pod nazivom 020_mod_ssl.conf u modules.d< direktorij sa sljedećim sadržajem.

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

Dodajte sljedeće redove u datoteku 020_mod_ssl.conf.

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

4. Sada dekomentirajte SSL modul iz datoteke /usr/local/etc/apache24/httpd.conf tako što ćete ukloniti hashtag s početka sljedećeg reda kao što je prikazano u nastavku:

LoadModule ssl_module libexec/apache24/mod_ssl.so

5. Zatim kreirajte TLS konfiguracijsku datoteku za svoju domenu u sites-available direktoriju, po mogućnosti s imenom vaše domene, kako je predstavljeno u donji izvod:

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

Dodajte sljedeću konfiguraciju virtuelnog hosta u datoteku 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>

Obavezno zamijenite varijablu imena domene iz ServerName, ServerAlias, ErrorLog, CustomLog izjava u skladu s tim.

Korak 2: Instalirajte Lets’Encrypt na FreeBSD

6. U sljedećem koraku izdajte sljedeću naredbu kako biste instalirali certbot uslužni program koji pruža Let's Encrypt, koji će se koristiti za dobivanje < jaki>Apache TSL besplatni certifikati za vašu domenu.

Dok instalirate certbot, na vašem ekranu će se prikazati niz upita. Koristite snimak ekrana ispod da konfigurišete uslužni program certbot. Također, kompajliranje i instalacija uslužnog programa certbot može potrajati neko vrijeme, ovisno o resursima vašeg stroja.

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

7. Nakon što je proces kompilacije završen, izdajte naredbu ispod kako biste ažurirali uslužni program certbot i certbot potrebne zavisnosti.

pkg install py27-certbot
pkg install py27-acme

8. Da biste generirali certifikat za svoju domenu, izdajte naredbu kao što je prikazano ispod. Provjerite jeste li naveli ispravnu webroot lokaciju na kojoj su datoteke vaše web stranice pohranjene u sistemu datoteka (DocumentRoot direktiva iz konfiguracijske datoteke vaše domene) pomoću oznake -w. Ako imate više poddomena, dodajte ih sve sa -d zastavicom.

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

Prilikom dobijanja certifikata, navedite adresu e-pošte za obnovu certifikata, pritisnite a da se slažete sa uslovima i odredbama Let’s Encrypt i n da ne dijelite adresu e-pošte sa partnerima 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. Nakon što ste dobili certifikate za svoju domenu, možete pokrenuti naredbu ls kako biste izlistali sve komponente certifikata (lanac, privatni ključ, certifikat) kao što je prikazano u primjeru ispod.

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

Korak 3: Ažurirajte Apache TLS certifikate na FreeBSD

10. Da biste dodali Let’s Encrypt certifikate na svoju web stranicu, otvorite konfiguracijsku datoteku apache za svoju domenu i ažurirajte sljedeće redove da odražavaju putanju izdanih certifikata.

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

Dodajte ove linije TLS certifikata:

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. Konačno, omogućite TLS konfiguracijsku datoteku, kreiranjem simbolične veze za TLS konfiguracijsku datoteku vaše domene do direktorija omogućene web stranice, provjerite Apache konfiguracije za moguće greške u sintaksi i, ako sintaksa je u redu, ponovo pokrenite Apache demon izdavanjem naredbi ispod.

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

12. Da biste provjerili da li Apache servis sluša HTTPS port 443, izdajte sljedeću naredbu za popis httpd mrežnih utičnica.

sockstat -4 | grep httpd

13. Možete se kretati do adrese vaše domene iz pretraživača putem HTTPS protokola kako biste potvrdili da su certifikati Let’s Encrypt uspješno primijenjeni.

https://www.yourdomain.com

14. Da biste dobili dodatne informacije o izdatom Let’s Encrypt certifikatu iz komandne linije, koristite naredbu openssl na sljedeći način.

openssl s_client -connect www.yourdomain.com:443

15. Također možete provjeriti da li je promet šifriran s važećim certifikatom koji pruža Let’s Encrypt CA s mobilnog uređaja kao što je ilustrovano na snimku ekrana mobilnog telefona ispod.

To je sve! Klijenti sada mogu sigurno posjetiti vašu web stranicu, jer je promet koji teče između servera i klijentovog pretraživača šifriran. Za složenije zadatke u vezi s uslužnim programom certbot posjetite sljedeći link: https://certbot.eff.org/