Android

I-secure ang apache sa pag-encrypt natin sa mga sentimo 7

How To Secure Apache with Let's Encrypt on CentOS 7

How To Secure Apache with Let's Encrypt on CentOS 7

Talaan ng mga Nilalaman:

Anonim

Hayaan ang Encrypt ay isang libre, awtomatiko, at bukas na awtoridad ng sertipiko na binuo ng Internet Security Research Group (ISRG). Ang mga sertipiko na inisyu ng Let Encrypt ay may bisa para sa 90 araw mula sa petsa ng isyu at pinagkakatiwalaan ng lahat ng mga pangunahing browser ngayon.

Sa tutorial na ito, takpan namin ang mga hakbang na kinakailangan upang mag-install ng isang libreng Let’s Encrypt SSL certificate sa isang CentOS 7 server na tumatakbo sa Apache bilang isang web server. Gagamitin namin ang utility ng sertbot upang makakuha at mabago ang mga sertipiko ng Iha-encrypt.

Mga kinakailangan

Tiyakin na nakamit mo ang sumusunod na mga kinakailangan bago magpatuloy sa tutorial na ito:

  • Magkaroon ng isang domain name na tumuturo sa iyong public server IP. Gagamitin namin ang example.com .Apache ay naka-install at tumatakbo sa iyong server.Have Apache virtual host para sa iyong domain.Ports 80 at 443 ay nakabukas sa iyong firewall.

I-install ang sumusunod na mga pakete na kinakailangan para sa isang SSL na naka-encrypt na web server:

yum install mod_ssl openssl

I-install ang Certbot

Ang Certbot ay isang tool na pinapasimple ang proseso para sa pagkuha ng mga sertipiko ng SSL mula sa Let Encrypt at pag-enable ng auto sa HTTPS sa iyong server.

Ang sertipikong pakete ay maaaring mabayaran para sa pag-install mula sa EPEL. Kung ang imbakan ng EPEL ay hindi naka-install sa iyong system, maaari mo itong mai-install gamit ang sumusunod na utos:

sudo yum install epel-release

Sa sandaling pinagana ang imbakan ng EPEL, i-install ang package ng sertbot sa pamamagitan ng pag-type:

sudo yum install certbot

Bumuo ng Malakas na Dh (Diffie-Hellman) Grupo

Ang diffie-Hellman key exchange (DH) ay isang paraan ng ligtas na pagpapalitan ng mga key ng cryptographic sa isang hindi ligtas na channel ng komunikasyon. Bumuo ng isang bagong hanay ng mga 2048 bit na mga parameter ng DH upang palakasin ang seguridad:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 Maaari mong baguhin ang sukat ng hanggang sa 4096 bit, ngunit sa kasong iyon, ang henerasyon ay maaaring tumagal ng higit sa 30 minuto depende sa entropy ng system.

Pagkuha ng isang I-encrypt na SSL sertipiko

Upang makakuha ng isang SSL sertipiko para sa aming domain, gagamitin namin ang plugin ng Webroot na gumagana sa pamamagitan ng paglikha ng isang pansamantalang file para sa pagpapatunay ng hiniling na domain sa ${webroot-path}/.well-known/acme-challenge . Ginagawa ng server ng Let's Encrypt ang mga kahilingan ng HTTP sa pansamantalang file upang mapatunayan na ang hiniling na domain ay nagpasiya sa server kung saan tumatakbo ang sertbot.

Upang gawing mas simple ay i-map namin ang lahat ng mga kahilingan sa HTTP para sa .well-known/acme-challenge sa isang solong direktoryo, /var/lib/letsencrypt .

Patakbuhin ang sumusunod na mga utos upang lumikha ng direktoryo at gawin itong nakasulat para sa Apache server:

sudo mkdir -p /var/lib/letsencrypt/.well-known sudo chgrp apache /var/lib/letsencrypt sudo chmod g+s /var/lib/letsencrypt

Upang maiwasan ang pagdoble ng code lumikha ng mga sumusunod na dalawang snippet ng pagsasaayos:

/etc/httpd/conf.d/letsencrypt.conf

Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/" AllowOverride None Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Require method GET POST OPTIONS Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/" AllowOverride None Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Require method GET POST OPTIONS /etc/httpd/conf.d/ssl-params.conf

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 SSLHonorCipherOrder On Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" Header always set X-Frame-Options DENY Header always set X-Content-Type-Options nosniff # Requires Apache >= 2.4 SSLCompression off SSLUseStapling on SSLStaplingCache "shmcb:logs/stapling-cache(150000)" # Requires Apache >= 2.4.11 SSLSessionTickets Off

Ang snippet sa itaas ay gumagamit ng mga tsinelas na inirerekomenda ng Cipherli.st, nagbibigay-daan sa OCSP Stapling, HTTP Strict Transport Security (HSTS) at nagpapatupad ng kaunting seguridad ‑ na nakatuon ang mga header ng

Reload ang pagsasaayos ng Apache para sa mga pagbabago na magkakabisa:

sudo systemctl reload

Ngayon, maaari naming patakbuhin ang tool na Certbot gamit ang plugin ng webroot at makuha ang mga file ng sertipiko ng SSL sa pamamagitan ng pag-type:

sudo certbot certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com

Kung matagumpay na nakuha ang sertipiko ng SSL, i-print ng sertbot ang sumusunod na mensahe:

IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com/privkey.pem Your cert will expire on 2018-12-07. 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" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF:

Ang mga barko ng CentOS 7 na may bersyon ng Apache 2.4.6, na hindi kasama ang direktiba ng SSLOpenSSLConfCmd . Ang direktiba na ito ay magagamit lamang sa Apache 2.4.8 mamaya, at ginagamit ito para sa pagsasaayos ng mga parameter ng OpenSSL tulad ng diffie-Hellman key exchange (DH).

Kailangan naming lumikha ng isang bagong pinagsamang file gamit ang Let’s Encrypt SSL certificate at ang nabuong DH file. Upang gawin ito, i-type ang:

cat /etc/letsencrypt/live/example.com/cert.pem /etc/ssl/certs/dhparam.pem >/etc/letsencrypt/live/example.com/cert.dh.pem

Ngayon na ang lahat ay naka-set up, i-edit ang iyong virtual virtual na pagsasaayos ng host tulad ng mga sumusunod:

/etc/httpd/conf.d/example.com.conf

ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/cert.dh.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem # Other Apache Configuration ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/cert.dh.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem # Other Apache Configuration ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/cert.dh.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem # Other Apache Configuration ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/cert.dh.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem # Other Apache Configuration

Gamit ang pagsasaayos sa itaas, pinipilit namin ang HTTPS at pag-redirect mula sa www hanggang sa di-www na bersyon. Mag-file ng malaya upang maiayos ang pagsasaayos ayon sa iyong mga pangangailangan.

I-restart ang serbisyo ng Apache para sa mga pagbabago na magkakabisa:

sudo systemctl restart

Maaari mo na ngayong buksan ang iyong website gamit ang https:// at mapapansin mo ang isang berdeng icon ng lock.

Pag-update ng Auto I-encrypt ang SSL certificate

Ang mga sertipiko ng Encrypt ay may bisa sa loob ng 90 araw. Upang awtomatikong i-renew ang mga sertipiko bago mag-expire, gagawa kami ng isang cronjob na tatakbo nang dalawang beses sa isang araw at awtomatikong i-renew ang anumang sertipiko 30 araw bago ito mag-expire.

Patakbuhin ang utos ng crontab upang lumikha ng isang bagong cronjob na magpapabago ng sertipiko, lumikha ng isang bagong pinagsama file kasama ang DH key at i-restart ang apache:

sudo crontab -e

0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew --renew-hook "systemctl reload

I-save at isara ang file.

Upang masubukan ang proseso ng pag-renew, maaari mong gamitin ang utos ng sertbot na sinusundan ng --dry-run :

sudo certbot renew --dry-run

Kung walang mga pagkakamali, nangangahulugan ito na matagumpay ang proseso ng pag-update.

Konklusyon

Sa tutorial na ito, ginamit mo ang sertipikadong client ng Let Encrypt upang i-download ang mga sertipiko ng SSL para sa iyong domain. Nilikha mo rin ang mga snippet ng Apache upang maiwasan ang pagdoble ng code at na-configure ang Apache upang magamit ang mga sertipiko. Sa pagtatapos ng tutorial, nag-set up ka ng isang cronjob para sa pag-renew ng awtomatikong sertipiko.

apache sentimo hayaan encrypt ang sertbot ssl

Ang post na ito ay isang bahagi ng I-install ang LAMP Stack sa serye ng CentOS 7.

Iba pang mga post sa seryeng ito:

• Paano I-install ang Apache sa CentOS 7 • I-install ang MySQL sa CentOS 7 • Paano Mag-set up ng mga Apache Virtual Host sa CentOS 7 • I-secure ang Apache na Mag-encrypt sa CentOS 7