Android

Sikker apache med la oss kryptere på centos 7

Apache near Howz-E-Madad, Kandahar, Afghanistan for Op Spinarwa, 2009 Part 1

Apache near Howz-E-Madad, Kandahar, Afghanistan for Op Spinarwa, 2009 Part 1

Innholdsfortegnelse:

Anonim

Let's Encrypt er en gratis, automatisert og åpen sertifikatmyndighet utviklet av Internet Security Research Group (ISRG). Sertifikater utstedt av Let's Encrypt er gyldige i 90 dager fra utstedelsesdatoen og er klarert av alle større nettlesere i dag.

I denne opplæringen vil vi dekke trinnene som er nødvendige for å installere et gratis Let's Encrypt SSL-sertifikat på en CentOS 7-server som kjører Apache som en webserver. Vi bruker certbot-verktøyet til å skaffe og fornye Let's Encrypt-sertifikater.

Forutsetninger

Forsikre deg om at du har oppfylt følgende forutsetninger før du fortsetter med denne opplæringen:

  • Har et domenenavn som peker til den offentlige server-IP-en. Vi bruker example.com Apache er installert og kjører på serveren din. Har den virtuelle Apache-verten for ditt domene. Portene 80 og 443 er åpne i brannmuren din.

Installer følgende pakker som er nødvendige for en SSL-kryptert webserver:

yum install mod_ssl openssl

Installer Certbot

Certbot er et verktøy som forenkler prosessen for å skaffe SSL-sertifikater fra Let's Encrypt og automatisk aktivere HTTPS på serveren din.

Certbot-pakken er tilgjengelig for installasjon fra EPEL. Hvis EPEL-repository ikke er installert på systemet ditt, kan du installere det ved hjelp av følgende kommando:

sudo yum install epel-release

Når EPEL-arkivet er aktivert, installerer du certbot-pakken ved å skrive:

sudo yum install certbot

Generer Strong Dh (Diffie-Hellman) -gruppen

Diffie – Hellman nøkkelutveksling (DH) er en metode for sikker utveksling av kryptografiske nøkler over en usikret kommunikasjonskanal. Generer et nytt sett med 2048 bit DH-parametere for å styrke sikkerheten:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 Du kan endre størrelsen opp til 4096 biter, men i så fall kan generasjonen ta mer enn 30 minutter avhengig av systemets entropi.

Innhenting av et Let's Encrypt SSL-sertifikat

For å få et SSL-sertifikat for domenet vårt, bruker vi Webroot-plugin som fungerer ved å lage en midlertidig fil for å validere det forespurte domenet i katalogen ${webroot-path}/.well-known/acme-challenge . Let's Encrypt-serveren sender HTTP-forespørsler til den midlertidige filen for å bekrefte at det forespurte domenet løses til serveren der certbot kjører.

For å gjøre det enklere skal vi kartlegge alle HTTP-forespørsler for .well-known/acme-challenge til en enkelt katalog, /var/lib/letsencrypt .

Kjør thr etter kommandoer for å opprette katalogen og gjøre den skrivbar for Apache-serveren:

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

For å unngå duplisering av kode oppretter du følgende to konfigurasjonsutdrag:

/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

Utdraget over bruker flishuggerne som er anbefalt av Cipherli.st, aktiverer OCSP-stifting, HTTP Strict Transport Security (HSTS) og håndhever få sikkerhetsfokuserte

Last inn Apache-konfigurasjonen på nytt for at endringene skal tre i kraft:

sudo systemctl reload

Nå kan vi kjøre Certbot-verktøyet med webroot-plugin og skaffe SSL-sertifikatfilene ved å skrive:

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

Hvis SSL-sertifikatet er oppnådd, skriver certbot ut følgende melding:

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:

CentOS 7 sendes med Apache versjon 2.4.6, som ikke inkluderer SSLOpenSSLConfCmd direktivet. Dette direktivet er bare tilgjengelig på Apache 2.4.8 senere, og det brukes til konfigurasjon av OpenSSL-parametere som Diffie – Hellman key exchange (DH).

Vi må lage en ny kombinert fil ved hjelp av Let's Encrypt SSL-sertifikatet og den genererte DH-filen. For å gjøre dette, skriver du inn:

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

Nå som alt er satt opp, kan du redigere konfigurasjonen av virtuell domene for domene slik:

/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

Med konfigurasjonen over tvinger vi HTTPS og omdirigerer fra www til ikke-www versjon. Du kan velge å justere konfigurasjonen etter dine behov.

Start Apache-tjenesten på nytt for at endringene skal tre i kraft:

sudo systemctl restart

Du kan nå åpne nettstedet ditt ved hjelp av https:// og du vil merke et grønt låseikon.

Forny automatisk Let's Encrypt SSL-sertifikat

Let's Encrypts sertifikater er gyldige i 90 dager. For å automatisk fornye sertifikatene før de utløper, oppretter vi en cronjob som kjøres to ganger om dagen og automatisk fornyer alle sertifikater 30 dager før utløpet.

Kjør crontab kommandoen for å lage en ny cronjob som vil fornye sertifikatet, lage en ny kombinert fil inkludert DH-tasten og starte apache på nytt:

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

Lagre og lukk filen.

For å teste fornyelsesprosessen kan du bruke certbot-kommandoen etterfulgt av - --dry-run bryteren:

sudo certbot renew --dry-run

Hvis det ikke er noen feil, betyr det at fornyelsesprosessen var vellykket.

Konklusjon

I denne opplæringen brukte du Let's Encrypt-klientens certbot til å laste ned SSL-sertifikater for domenet ditt. Du har også opprettet Apache-utdrag for å unngå duplisering av kode og konfigurert Apache til å bruke sertifikatene. På slutten av opplæringen har du satt opp en cronjob for automatisk fornyelse av sertifikatet.

apache centos la oss kryptere certbot ssl

Dette innlegget er en del av Install LAMP Stack på CentOS 7-serien.

Andre innlegg i denne serien:

• Hvordan installere Apache på CentOS 7 • Installer MySQL på CentOS 7 • Slik konfigurerer du virtuelle verter av Apache på CentOS 7 • Sikre Apache med Let's Encrypt på CentOS 7