Android

Sikker apache med lad os kryptere på ubuntu 18.04

Week 7, continued

Week 7, continued

Indholdsfortegnelse:

Anonim

Let's Encrypt er en certifikatmyndighed oprettet af Internet Security Research Group (ISRG). Det giver gratis SSL-certifikater via en fuldautomatisk proces designet til at eliminere manuel certifikatoprettelse, validering, installation og fornyelse.

Certifikater udstedt af Let's Encrypt er tillid til alle de store browsere i dag.

I denne tutorial giver vi trin for trin instruktioner om, hvordan du sikrer din Apache med Let's Encrypt ved hjælp af certbot-værktøjet på Ubuntu 18.04.

Forudsætninger

Sørg for, at du har opfyldt følgende forudsætninger, før du fortsætter med denne tutorial:

  • Domænenavn, der peger på din offentlige server-IP. Vi bruger example.com Du har Apache installeret med en virtuel apache-vært til dit domæne.

Installer Certbot

Certbot er et fuldt udstyret og brugervenligt værktøj, der kan automatisere opgaverne til at få og forny Let's Let's Encrypt SSL-certifikater og konfigurere webservere. Certbot-pakken er inkluderet i Ubuntu's standardlager.

Opdater pakkelisten, og installer certbot-pakken:

sudo apt update sudo apt install certbot

Generer Strong Dh (Diffie-Hellman) -gruppen

Diffie – Hellman key exchange (DH) er en metode til sikker udveksling af kryptografiske nøgler over en usikret kommunikationskanal. Vi vil generere et nyt sæt 2048 bit DH-parametre for at styrke sikkerheden:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 Hvis du vil, kan du ændre størrelsen op til 4096 bit, men i dette tilfælde kan genereringen tage mere end 30 minutter afhængigt af systemets entropi.

At få et Let's Encrypt SSL-certifikat

For at få et SSL-certifikat til domænet vil vi bruge Webroot-plugin, der fungerer ved at oprette en midlertidig fil til validering af det anmodede domæne i ${webroot-path}/.well-known/acme-challenge bibliotek. Let's Encrypt-serveren fremsætter HTTP-anmodninger til den midlertidige fil for at validere, at det anmodede domæne løses til den server, hvor certbot kører.

For at gøre det lettere skal vi kortlægge alle HTTP-anmodninger om .well-known/acme-challenge til et enkelt bibliotek, /var/lib/letsencrypt .

Følgende kommandoer opretter mappen og gør den skrivbar til 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 at undgå duplikering af kode skal du oprette følgende to konfigurationsuddrag:

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

Uddraget ovenfor bruger de flishuggere, der er anbefalet af Cipherli.st, aktiverer OCSP-hæftning, HTTP Strict Transport Security (HSTS) og håndhæver få sikkerhedsfokuserede

Før du aktiverer konfigurationsfilerne, skal du sørge for, at både mod_headers og mod_headers er aktiveret ved at udstede:

sudo a2enmod ssl sudo a2enmod headers

Aktivér derefter SSL-konfigurationsfiler ved at køre følgende kommandoer:

sudo a2enconf letsencrypt sudo a2enconf ssl-params

Aktivér HTTP / 2-modulet, som vil gøre dine websteder hurtigere og mere robuste:

sudo a2enmod

Genindlæs Apache-konfigurationen, så ændringerne træder i kraft:

sudo systemctl reload apache2

Nu kan vi køre Certbot-værktøjet med webroot-plugin og få SSL-certifikatfiler ved at skrive:

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

Hvis SSL-certifikatet er opnået med succes, udskriver certbot følgende meddelelse:

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:

Nu når du har certifikatfilerne, rediger din konfiguration af din virtuelle host-domæne som følger:

/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 konfigurationen ovenfor tvinger vi HTTPS og omdirigerer fra www til ikke-www version. Bliv fri for at justere konfigurationen efter dine behov.

Genopdater Apache-tjenesten, så ændringerne træder i kraft:

sudo systemctl reload apache2

Du kan nu åbne dit websted ved hjælp af https:// , og du vil se et grønt låsikon.

Automatisk fornyelse af Let's Encrypt SSL-certifikat

Let's Encrypt's certifikater er gyldige i 90 dage. For automatisk at fornye certifikaterne, før de udløber, opretter certbot-pakken en cronjob, der kører to gange om dagen og forny automatisk ethvert certifikat 30 dage før det udløber.

Når certifikatet er fornyet, skal vi også genindlæse Apache-tjenesten. Tilføj - --renew-hook "systemctl reload apache2" til filen /etc/cron.d/certbot , så den ser ud som følger:

/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 at teste fornyelsesprocessen kan du bruge certbot - --dry-run kontakten:

sudo certbot renew --dry-run

Hvis der ikke er nogen fejl, betyder det, at fornyelsesprocessen var vellykket.

Konklusion

I denne tutorial anvendte du Let's Encrypt-klientcertbot til at downloade SSL-certifikater til dit domæne. Du har også oprettet Apache-kodestykker for at undgå duplikering af kode og konfigureret Apache til at bruge certifikaterne. I slutningen af ​​selvstudiet har du konfigureret en cronjob til automatisk fornyelse af certifikater.

apache ubuntu lad os kryptere certbot ssl

Dette indlæg er en del af how-to-install-lamp-stack-on-ubuntu-18-04-serien.

Andre indlæg i denne serie:

• Sådan installeres Apache på Ubuntu 18.04 • Sådan installeres Apache virtuelle værter på Ubuntu 18.04 • Sikker Apache med Let's Encrypt på Ubuntu 18.04 • Sådan installeres MySQL på Ubuntu 18.04 • Sådan installeres PHP på Ubuntu 18.04