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.

  1. FreeBSD 11.x instalēšana
  2. 10 lietas, kas jādara pēc FreeBSD instalēšanas
  3. 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/