Kā nodrošināt Apache drošību ar SSL un šifrēsim FreeBSD
Šajā apmācībā mēs uzzināsim, kā nodrošināt Apache HTTP serveri ar TLS/SSL sertifikātiem, ko piedāvā Let’s Encrypt FreeBSD 11.x. Mēs arī aplūkosim, kā automatizēt Lets ’Encrypt sertifikātu atjaunošanas procesu.
TLS/SSL sertifikātus Apache tīmekļa serveris izmanto, lai šifrētu sakarus starp gala mezgliem vai parastāk starp serveri un klientu, lai nodrošinātu drošību. Let’s Encrypt nodrošina komandrindas utilītu certbot, kas ir programma, kas var atvieglot uzticamu sertifikātu bezmaksas iegādi.
- FreeBSD 11.x instalēšana
- 10 lietas, kas jādara pēc FreeBSD instalēšanas
- Kā FreeBSD instalēt Apache, MariaDB un PHP
1. darbība: konfigurējiet Apache SSL vietnē FreeBSD
1. Pirms sākat instalēt certbot lietderību un izveidojat Apache TSL konfigurācijas failu, vispirms izveidojiet divus atšķirīgus direktorijus ar nosaukumiem Vietnes un Vietnes iespējots Apache sakņu konfigurācijas direktorijā, izsniedzot tālāk norādītās komandas.
Šo divu direktoriju mērķis ir atvieglot virtuālās mitināšanas konfigurācijas pārvaldību sistēmā, nemainot Apache httpd.conf galveno konfigurācijas failu katru reizi, kad pievienojam jaunu virtuālo resursdatoru.
# mkdir /usr/local/etc/apache24/sites-available # mkdir /usr/local/etc/apache24/sites-enabled
2. Kad esat izveidojis abus direktorijus, atveriet Apache httpd.conf failu ar teksta redaktoru un pievienojiet šo rindiņu faila beigās, kā parādīts zemāk.
# nano /usr/local/etc/apache24/httpd.conf
Pievienojiet šādu rindu:
IncludeOptional etc/apache24/sites-enabled/*.conf
3. Pēc tam iespējojiet TLS moduli Apache, direktorijā module.d ar šādu saturu izveidojot jaunu failu ar nosaukumu 020_mod_ssl.conf.
# nano /usr/local/etc/apache24/modules.d/020_mod_ssl.conf
Pievienojiet failam 020_mod_ssl.conf šādas rindas.
Listen 443 SSLProtocol ALL -SSLv2 -SSLv3 SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5 SSLPassPhraseDialog builtin SSLSessionCacheTimeout 300
4. Tagad noņemiet komentāru SSL modulim no faila /usr/local/etc/apache24/httpd.conf, noņemot atsauci no šīs rindas sākuma, kā parādīts zemāk:
LoadModule ssl_module libexec/apache24/mod_ssl.so
5. Pēc tam vietnēs pieejamā direktorijā izveidojiet sava domēna TLS konfigurācijas failu, vēlams ar sava domēna nosaukumu, kā parādīts zemāk esošajā fragmentā:
# nano /usr/local/etc/apache24/sites-available/bsd.lan-ssl.conf
Pievienojiet failam bsd.lan-ssl.conf šādu virtualhost konfigurāciju.
<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>
Pārliecinieties, ka domēna nosaukuma mainīgais ir attiecīgi aizstāts ar paziņojumiem ServerName, ServerAlias, ErrorLog, CustomLog.
2. darbība: instalējiet Lets’Encrypt vietnē FreeBSD
6. Nākamajā solī izdodiet šādu komandu, lai instalētu Let’s Encrypt nodrošināto utilītu certbot, kas tiks izmantota, lai iegūtu jūsu domēnam Apache TSL bezmaksas sertifikātus.
Instalējot certbot, ekrānā tiks parādīta virkne uzvedņu. Izmantojiet šo ekrānuzņēmumu, lai konfigurētu certbot lietderību. Arī certbot utilītas sastādīšana un instalēšana var aizņemt kādu laiku, atkarībā no jūsu datora resursiem.
# cd /usr/ports/security/py-certbot # make install clean
7. Pēc kompilēšanas procesa beigām izdodiet šādu komandu, lai atjauninātu certbot lietderību un certbot nepieciešamās atkarības.
# pkg install py27-certbot # pkg install py27-acme
8. Lai ģenerētu sava domēna sertifikātu, izsniedziet komandu, kā parādīts zemāk. Izmantojot karodziņu -w
, pārliecinieties, vai esat norādījis pareizo tīmekļa sakņu vietu, kur failu sistēmā tiek glabāti jūsu vietnes faili (DocumentRoot direktīva no jūsu domēna konfigurācijas faila). Ja jums ir vairāki apakšdomēni, pievienojiet tos visus ar karodziņu -d
.
# certbot certonly --webroot -w /usr/local/www/apache24/data/ -d yourdomain.com -d www.yourdomain.com
Iegūstot sertifikātu, norādiet e-pasta adresi sertifikāta atjaunošanai, nospiediet a, lai piekristu Let’s Encrypt noteikumiem un nosacījumiem, un n
, lai netiktu koplietota e-pasta adrese Let’s Encrypt partners.
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. Kad esat ieguvis sava domēna sertifikātus, varat palaist komandu ls, lai uzskaitītu visus sertifikāta komponentus (ķēde, privātā atslēga, sertifikāts), kā parādīts šajā piemērā.
# ls -al /usr/local/etc/letsencrypt/live/www.yourdomain.com/
3. darbība. Atjauniniet Apache TLS sertifikātus vietnē FreeBSD
10. Lai savai vietnei pievienotu Let’s Encrypt sertifikātus, atveriet sava domēna apache konfigurācijas failu un atjauniniet šīs rindas, lai atspoguļotu izsniegto sertifikātu ceļu.
# nano /usr/local/etc/apache24/sites-available/bsd.lan-ssl.conf
Pievienojiet šīs TLS sertifikāta rindas:
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. Visbeidzot, iespējojiet TLS konfigurācijas failu, izveidojot simbola saiti sava domēna TLS konfigurācijas failam uz vietnēm iespējotu direktoriju, pārbaudiet, vai Apache konfigurācijās nav iespējamās sintakses kļūdas, un, ja sintakse ir kārtībā, restartējiet Apache dēmonu, izsniedzot tālāk norādītās komandas.
# ln -sf /usr/local/etc/apache24/sites-available/bsd.lan-ssl.conf /usr/local/etc/apache24/sites-enabled/ # apachectl -t # service apache24 restart
12. Lai pārbaudītu, vai Apache pakalpojums klausās HTTPS 443. portā, izdodiet šādu komandu, lai norādītu httpd tīkla kontaktligzdas.
# sockstat -4 | grep httpd
13. Jūs varat pārvietoties uz savu domēna adresi no pārlūkprogrammas, izmantojot HTTPS protokolu, lai pārliecinātos, ka Let’s Encrypt sertifikāti ir veiksmīgi izmantoti.
https://www.yourdomain.com
14. Lai iegūtu papildu informāciju par izsniegto Let’s Encrypt certificate from command line, izmantojiet komandu openssl šādi.
# openssl s_client -connect www.yourdomain.com:443
15. Varat arī pārbaudīt, vai datplūsma ir šifrēta ar derīgu sertifikātu, ko nodrošina Let’s Encrypt CA no mobilās ierīces, kā parādīts zemāk redzamajā mobilajā ekrānuzņēmumā.
Tas ir viss! Tagad klienti var droši apmeklēt jūsu vietni, jo trafika, kas plūst starp serveri un klienta pārlūkprogrammu, ir šifrēta. Lai iegūtu sarežģītākus uzdevumus attiecībā uz certbot lietderību, apmeklējiet šo saiti: https://certbot.eff.org/