Android

Sikker apache med la oss kryptere på ubuntu 18.04

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 sertifikatmyndighet opprettet av Internet Security Research Group (ISRG). Det gir gratis SSL-sertifikater via en helautomatisert prosess designet for å eliminere manuell sertifikatoppretting, validering, installasjon og fornyelse.

Sertifikater utstedt av Let's Encrypt er klarert av alle store nettlesere i dag.

I denne opplæringen gir vi trinnvise instruksjoner om hvordan du sikrer din Apache med Let's Encrypt ved å bruke certbot-verktøyet på Ubuntu 18.04.

Forutsetninger

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

  • Domenenavn som peker til din offentlige server-IP. Vi bruker example.com Du har Apache installert med en virtuell apache-vert for domenet ditt.

Installer Certbot

Certbot er et fullt utstyrt og brukervennlig verktøy som kan automatisere oppgavene for å skaffe og fornye Let's Encrypt SSL-sertifikater og konfigurere webservere. Certbot-pakken er inkludert i standard Ubuntu-lagringene.

Oppdater pakkelisten og installer certbot-pakken:

sudo apt update sudo apt 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. Vi kommer til å generere et nytt sett med 2048 bit DH-parametere for å styrke sikkerheten:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 Hvis du vil, kan du 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, 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 .

Følgende kommandoer lager katalogen og gjør den skrivbar for Apache-serveren.

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

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

/etc/apache2/conf-available/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/apache2/conf-available/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 SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"

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

Før du aktiverer konfigurasjonsfilene, må du sørge for at både mod_ssl og mod_headers er aktivert ved å utstede:

sudo a2enmod ssl sudo a2enmod headers

Aktiver deretter SSL-konfigurasjonsfilene ved å kjøre følgende kommandoer:

sudo a2enconf letsencrypt sudo a2enconf ssl-params

Aktiver HTTP / 2-modulen, som vil gjøre nettstedene dine raskere og mer robuste:

sudo a2enmod

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

sudo systemctl reload apache2

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-10-28. 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:

Nå som du har sertifikatfilene, kan du redigere konfigurasjonen av den virtuelle domene for domene slik:

/etc/apache2/sites-available/example.com.conf

ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog ${APACHE_LOG_DIR}/example.com-error.log CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # Other Apache Configuration ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog ${APACHE_LOG_DIR}/example.com-error.log CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # Other Apache Configuration ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog ${APACHE_LOG_DIR}/example.com-error.log CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # Other Apache Configuration ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog ${APACHE_LOG_DIR}/example.com-error.log CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.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.

Last inn Apache-tjenesten på nytt for at endringer skal tre i kraft:

sudo systemctl reload apache2

Du kan nå åpne nettstedet ditt ved å bruke 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 certbot-pakken en cronjob som kjøres to ganger om dagen og forny automatisk ethvert sertifikat 30 dager før utløpet.

Når sertifikatet er fornyet, må vi også laste inn Apache-tjenesten på nytt. Legg til - --renew-hook "systemctl reload apache2" til filen --renew-hook "systemctl reload apache2" slik at den ser ut slik:

/etc/cron.d/certbot

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 apache2"

For å teste fornyelsesprosessen kan du bruke certbot - --dry-run :

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, for å 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 ubuntu la oss kryptere certbot ssl

Dette innlegget er en del av hvordan-å-installere-lampe-stabel-på-ubuntu-18-04-serien.

Andre innlegg i denne serien:

• Hvordan installere Apache på Ubuntu 18.04 • Hvordan konfigurere Apache virtuelle verter på Ubuntu 18.04 • Sikre Apache med Let's Encrypt på Ubuntu 18.04 • Hvordan installere MySQL på Ubuntu 18.04 • Hvordan installere PHP på Ubuntu 18.04