Kaip apsaugoti „Apache“ naudojant SSL ir šifruokime „FreeBSD“


Šioje pamokoje sužinosime, kaip apsaugoti „Apache“ HTTP serverį naudojant TLS/SSL sertifikatus, kuriuos siūlo „Let’s Encrypt“ „FreeBSD 11.x“. Taip pat aptarsime, kaip automatizuoti „Lets’ Encrypt “sertifikato atnaujinimo procesą.

TLS/SSL sertifikatus naudoja „Apache“ žiniatinklio serveris, kad užšifruotų ryšį tarp galutinių mazgų, arba įprasčiau tarp serverio ir kliento, kad užtikrintų saugumą. „Encrypt“ teikia „certbot“ komandų eilutės įrankį, kuris yra programa, kuri gali palengvinti būdą, kaip galite nemokamai gauti patikimus sertifikatus.

  1. „FreeBSD 11.x“ įdiegimas
  2. 10 dalykų, kuriuos reikia atlikti įdiegus „FreeBSD“
  3. Kaip įdiegti „Apache“, „MariaDB“ ir PHP į „FreeBSD“

1 veiksmas: konfigūruokite „Apache SSL“ „FreeBSD“

1. Prieš pradėdami diegti „certbot“ įrankį ir kurdami „Apache“ TSL konfigūracijos failą, pirmiausia sukurkite du skirtingus katalogus, pavadintus svetainėmis ir svetainėmis, esančiomis „Apache“ šakniniame konfigūracijos kataloge, pateikdami toliau nurodytas komandas.

Šių dviejų katalogų paskirtis yra palengvinti virtualaus prieglobos konfigūracijos valdymą sistemoje, nekeičiant pagrindinio „Apache httpd.conf“ konfigūracijos failo kiekvieną kartą, kai pridedame naują virtualų pagrindinį kompiuterį.

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

2. Sukūrę abu katalogus, atidarykite „Apache httpd.conf“ failą naudodami teksto rengyklę ir pridėkite šią eilutę šalia failo pabaigos, kaip parodyta žemiau.

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

Pridėkite šią eilutę:

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

3. Tada įgalinkite „Apache“ TLS modulį, kataloge moduliai.d sukurdami šį naują failą pavadinimu 020_mod_ssl.conf su tokiu turiniu.

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

Įtraukite šias eilutes į failą 020_mod_ssl.conf.

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

4. Dabar, nekomentuokite SSL modulio iš /usr/local/etc/apache24/httpd.conf failo, pašalindami žymą iš šios eilutės pradžios, kaip parodyta žemiau:

LoadModule ssl_module libexec/apache24/mod_ssl.so

5. Tada sukurkite savo domeno TLS konfigūracijos failą prieinamame kataloge, pageidautina nurodydami savo domeno pavadinimą, kaip nurodyta toliau pateiktoje ištraukoje:

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

Pridėkite šią „virtualhost“ konfigūraciją prie failo 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>

Įsitikinkite, kad atitinkamai pakeitėte domeno vardo kintamąjį iš sakinių ServerName, ServerAlias, ErrorLog, CustomLog.

2 veiksmas: įdiekite „Lets‘Encrypt“ į „FreeBSD“

6. Atlikdami kitą veiksmą, išleiskite šią komandą, kad įdiegtumėte „Let’s Encrypt“ teikiamą „certbot“ įrankį, kuris bus naudojamas norint gauti nemokamus „Apache“ TSL sertifikatus jūsų domenui.

Diegiant „certbot“ ekrane bus rodoma eilutė raginimų. Norėdami konfigūruoti „certbot“ įrankį, naudokite žemiau pateiktą ekrano kopiją. Be to, „certbot“ programos sukūrimas ir įdiegimas gali užtrukti šiek tiek laiko, atsižvelgiant į jūsų mašinos išteklius.

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

7. Baigę kompiliavimo procesą, pateikite žemiau esančią komandą, kad atnaujintumėte „certbot“ įrankį ir reikalingas „certbot“ priklausomybes.

# pkg install py27-certbot
# pkg install py27-acme

8. Norėdami sugeneruoti savo domeno sertifikatą, išleiskite komandą, kaip parodyta žemiau. Įsitikinkite, kad nurodėte teisingą žiniatinklio šaknies vietą, kurioje jūsų svetainės failai saugomi failų sistemoje („DocumentRoot“ direktyva iš jūsų domeno konfigūracijos failo), naudodamiesi -w žyma. Jei turite kelis padomenius, pridėkite juos visus su vėliava -d .

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

Gaunant sertifikatą, pateikite el. Pašto adresą sertifikatui atnaujinti, paspauskite a, kad sutiktumėte su „Let’s Encrypt“ taisyklėmis ir nuostatomis, ir n , kad nebendrintumėte el. Pašto adreso „Let's Encrypt“ partnerių.

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. Įsigiję domeno sertifikatus, galite paleisti komandą ls, kad išvardytumėte visus sertifikato komponentus (grandinę, privatųjį raktą, sertifikatą), pateiktą žemiau pateiktame pavyzdyje.

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

3 žingsnis: Atnaujinkite „Apache TLS“ sertifikatus „FreeBSD“

10. Norėdami pridėti „Encrypt“ sertifikatus į savo svetainę, atidarykite savo domeno „apache“ konfigūracijos failą ir atnaujinkite šias eilutes, kad atspindėtų išduotų sertifikatų kelią.

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

Pridėkite šias TLS sertifikato eilutes:

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. Galiausiai įgalinkite TLS konfigūracijos failą sukurdami savo domeno TLS konfigūracijos failo nuorodą į svetaines įgalintą katalogą, patikrinkite, ar „Apache“ konfigūracijose nėra galimų sintaksės klaidų ir, jei sintaksė yra gera, paleiskite „Apache“ deemoną išleisdami toliau nurodytas 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. Norėdami patikrinti, ar „Apache“ paslauga klausosi HTTPS 443 prievado, išleiskite šią komandą, kad pateiktumėte „httpd“ tinklo lizdus.

# sockstat -4 | grep httpd

13. Norėdami naršyti naršyklėje per HTTPS protokolą, galite pereiti prie savo domeno adreso, kad patvirtintumėte, jog „Let's Encrypt“ sertifikatai sėkmingai pritaikyti.

https://www.yourdomain.com

14. Norėdami gauti papildomos informacijos apie išduotą „Let's Encrypt“ sertifikatą iš komandinės eilutės, naudokite komandą openssl taip.

# openssl s_client -connect www.yourdomain.com:443

15. Taip pat galite patikrinti, ar srautas yra užšifruotas galiojančiu sertifikatu, kurį „Let’s Encrypt CA“ pateikė iš mobiliojo prietaiso, kaip parodyta toliau pateiktoje mobiliųjų įrenginių ekrano kopijoje.

Tai viskas! Dabar klientai gali saugiai apsilankyti jūsų svetainėje, nes srautas, tekantis tarp serverio ir kliento naršyklės, yra užšifruotas. Norėdami atlikti sudėtingesnes užduotis, susijusias su „certbot“ įrankiu, apsilankykite šioje nuorodoje: https://certbot.eff.org/