Android

Sikker apache med lad os kryptere på debian 9

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 gyldige i 90 dage fra udstedelsesdatoen og er tillid til alle større browsere i dag.

Denne tutorial vil guide dig gennem processen med at få et gratis Let's Encrypt ved hjælp af certbot-værktøjet på Debian 9. Vi viser også, hvordan du konfigurerer Apache til at bruge det nye SSL-certifikat og aktivere HTTP / 2.

Forudsætninger

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

  • Logget ind som bruger med sudo-privilegier. Har et domænenavn, der peger på din server offentlige server IP. Vi bruger example.com Apache installeret. En virtuel apache-vært for dit domæne. Du kan følge disse instruktioner for detaljer om, hvordan du opretter en.

Installer Certbot

Certbot er et fuldt udstyret og brugervenligt værktøj, der kan automatisere opgaverne til opnåelse og fornyelse af Let's Encrypt SSL-certifikater. Certbot-pakken er inkluderet i Debian's standardlager.

Opdater pakkelisten, og installer certbot-pakken ved hjælp af følgende kommandoer:

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.

Sådan genereres et nyt sæt 2048 bit DH-parametre:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 Hvis du vil, kan du ændre størrelsen op til 4096 bits, 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 vores domæne 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 .

De følgende kommandoer opretter kataloget og gør det skrivbart 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 HTTP / 2-modulet, som vil gøre dine websteder hurtigere og mere robuste:

sudo a2enmod

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

sudo a2enconf letsencrypt sudo a2enconf ssl-params

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

sudo systemctl reload apache2

Brug Certbot-værktøjet med webroot-plugin til at hente SSL-certifikatfiler:

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: IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/example.com/fullchain.pem. Your cert will expire on 2019-01-17. 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 lose your account credentials, you can recover through e-mails sent to [email protected]. - Your account credentials have been saved in your Certbot configuration directory at /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:

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

Åbn 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 vil automatisk forny 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 skal 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 få 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 debian lad os kryptere certbot ssl

Dette indlæg er en del af Sådan installeres LAMP Stack i Debian 9-serien.

Andre indlæg i denne serie:

• Sådan installeres Apache på Debian 9 • Sådan installeres PHP på Debian 9 • Sådan konfigureres Apache virtuelle værter på Debian 9 • Sådan installeres MariaDB på Debian 9 • Sikker Apache med Let's Encrypt på Debian 9