Kako osigurati Apache s SSL-om i Let’s Encrypt u FreeBSD-u
U ovom vodiču ćemo naučiti kako osigurati Apache HTTP poslužitelj s 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 for Nginx na FreeBSD
TLS/SSL certifikate koristi Apache web poslužitelj za šifriranje komunikacije između krajnjih čvorova ili uobičajenije između poslužitelja i klijenta kako bi se osigurala sigurnost. Let’s Encrypt nudi uslužni program naredbenog retka certbot, koji je aplikacija koja može olakšati način na koji možete besplatno dobiti pouzdane certifikate.
Zahtjevi:
- Instalacija FreeBSD 11.x
- 10 stvari koje trebate učiniti nakon instalacije FreeBSD-a
- Kako instalirati Apache, MariaDB i PHP u FreeBSD
Korak 1: Konfigurirajte Apache SSL na FreeBSD-u
1. Prije početka instaliranja uslužnog programa certbot i stvaranja TSL konfiguracijske datoteke za Apache, prvo stvorite dva različita direktorija pod nazivom sites-available i sites-enabled u Apache root konfiguracijskom direktoriju izdavanjem donjih naredbi.
Svrha ova dva direktorija je olakšati upravljanje konfiguracijom virtualnog hostinga u sustavu, bez mijenjanja glavne Apache httpd.conf konfiguracijske datoteke svaki put kada dodamo novi virtualni host.
mkdir /usr/local/etc/apache24/sites-available
mkdir /usr/local/etc/apache24/sites-enabled
2. Nakon što ste izradili oba direktorija, otvorite Apache httpd.conf datoteku pomoću uređivača teksta i dodajte sljedeći redak blizu kraja datoteke kao što je prikazano u nastavku.
nano /usr/local/etc/apache24/httpd.conf
Dodajte sljedeći redak:
IncludeOptional etc/apache24/sites-enabled/*.conf
3. Zatim omogućite TLS modul za Apache stvaranjem sljedeće nove datoteke 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 retke u datoteku 020_mod_ssl.conf.
Listen 443
SSLProtocol ALL -SSLv2 -SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLPassPhraseDialog builtin
SSLSessionCacheTimeout 300
4. Sada skinite komentar s modula SSL iz datoteke /usr/local/etc/apache24/httpd.conf uklanjanjem hashtag-a od početka sljedećeg retka kao što je prikazano u nastavku:
LoadModule ssl_module libexec/apache24/mod_ssl.so
5. Zatim stvorite TLS konfiguracijsku datoteku za svoju domenu u imeniku dostupnih web-mjesta, po mogućnosti s nazivom vaše domene, kako je prikazano u donji izvadak:
nano /usr/local/etc/apache24/sites-available/bsd.lan-ssl.conf
Dodajte sljedeću konfiguraciju virtualnog 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 naziva domene iz izjava ServerName, ServerAlias, ErrorLog, CustomLog.
Korak 2: Instalirajte Lets’Encrypt na FreeBSD
6. U sljedećem koraku izdajte sljedeću naredbu kako biste instalirali uslužni program certbot koji nudi Let's Encrypt, a koji će se koristiti za dobivanje Apache TSL besplatni certifikati za vašu domenu.
Dok instalirate certbot na vašem će se zaslonu prikazati niz upita. Upotrijebite donju snimku zaslona za konfiguraciju uslužnog programa certbot. Također, kompajliranje i instaliranje 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 završetka procesa kompilacije izdajte naredbu u nastavku kako biste ažurirali uslužni program certbot i potrebne ovisnosti certbot.
pkg install py27-certbot
pkg install py27-acme
8. Kako biste generirali certifikat za svoju domenu, izdajte naredbu kao što je prikazano u nastavku. Provjerite jeste li unijeli ispravnu webroot lokaciju na kojoj su datoteke vaše web stranice pohranjene u datotečnom sustavu (DocumentRoot direktiva iz konfiguracijske datoteke vaše domene) pomoću oznake -w
. Ako imate više poddomena, dodajte ih sve s oznakom -d
.
certbot certonly --webroot -w /usr/local/www/apache24/data/ -d yourdomain.com -d www.yourdomain.com
Dok dobivate certifikat, navedite adresu e-pošte za obnovu certifikata, pritisnite a da se slažete s uvjetima i odredbama Let’s Encrypt i n
da ne dijelite adresu e-pošte s 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 dobijete certifikate za svoju domenu, možete pokrenuti naredbu ls kako biste ispisali sve komponente certifikata (lanac, privatni ključ, certifikat) kao što je prikazano u primjeru u nastavku.
ls -al /usr/local/etc/letsencrypt/live/www.yourdomain.com/
Korak 3: Ažurirajte Apache TLS certifikate na FreeBSD
10. Kako biste dodali Let’s Encrypt certifikate na svoju web stranicu, otvorite apache konfiguracijsku datoteku za svoju domenu i ažurirajte sljedeće retke kako bi odražavali putanju izdanih certifikata.
nano /usr/local/etc/apache24/sites-available/bsd.lan-ssl.conf
Dodajte ove retke 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. Na kraju, omogućite TLS konfiguracijsku datoteku stvaranjem simboličke veze za TLS konfiguracijsku datoteku vaše domene na direktorij sites-enabled, provjerite Apache konfiguracije za moguće sintaktičke pogreške i, ako sintaksa je u redu, ponovno pokrenite Apache daemon izdavanjem naredbi u nastavku.
ln -sf /usr/local/etc/apache24/sites-available/bsd.lan-ssl.conf /usr/local/etc/apache24/sites-enabled/
apachectl -t
service apache24 restart
12. Kako biste provjerili sluša li Apache usluga HTTPS port 443, izdajte sljedeću naredbu za popis httpd mrežnih utičnica.
sockstat -4 | grep httpd
13. Možete doći do adrese svoje domene iz preglednika putem HTTPS protokola kako biste potvrdili da su certifikati Let’s Encrypt uspješno primijenjeni.
https://www.yourdomain.com
14. Kako biste dobili dodatne informacije o izdanom Let’s Encrypt certifikatu iz naredbenog retka, koristite naredbu openssl kako slijedi.
openssl s_client -connect www.yourdomain.com:443
15. Također možete provjeriti je li promet šifriran s važećim certifikatom koji daje Let’s Encrypt CA s mobilnog uređaja kao što je prikazano na donjoj snimci zaslona mobilnog uređaja.
To je sve! Klijenti sada mogu sigurno posjećivati vašu web stranicu jer je promet koji teče između poslužitelja i klijentovog preglednika šifriran. Za složenije zadatke koji se tiču uslužnog programa certbot posjetite sljedeću poveznicu: https://certbot.eff.org/