Android

Sikker apache med lad os kryptere på centos 8

Week 7, continued

Week 7, continued

Indholdsfortegnelse:

Anonim

Let's Encrypt er en gratis, automatiseret og åben certifikatmyndighed udviklet af Internet Security Research Group (ISRG), der leverer gratis SSL-certifikater.

Certifikater udstedt af Let's Encrypt er tillid til alle større browsere og er gyldige i 90 dage fra udstedelsesdatoen.

Denne tutorial forklarer, hvordan du installerer et gratis Let's Encrypt SSL-certifikat på CentOS 8, der kører Apache som en webserver. Vi bruger certbot-værktøjet til at få og forny certifikaterne.

Forudsætninger

Sørg for, at følgende forudsætninger er opfyldt, før du fortsætter:

  • Har et domænenavn, der peger på din offentlige server-IP. Vi bruger example.com Apache er installeret og kører på din server med en virtuel vært, der er konfigureret til dit domæne. Porte 80 og 443 er åbne i din firewall.

Installer følgende pakker, der kræves til en SSL-krypteret webserver:

sudo dnf install mod_ssl openssl

Når mod_ssl-pakken er installeret, skal den oprette en selvsigneret nøgle og certifikatfiler til localhost. Hvis filerne ikke automatisk oprettes, kan du oprette dem ved hjælp af kommandoen openssl :

sudo openssl req -newkey rsa:4096 -x509 -sha256 -days 3650 -nodes \ -out /etc/pki/tls/certs/localhost.crt \ -keyout /etc/pki/tls/private/localhost.key

Installer Certbot

Certbot er et gratis kommandolinjeværktøj, der forenkler processen til at hente og forny Let's Let's Encrypt SSL-certifikater fra og automatisk aktivere HTTPS på din server.

Certbot-pakken er ikke inkluderet i standard CentOS 8-oplagrene, men den kan downloades fra sælgerens websted.

Kør følgende wget kommando som root- eller sudo-bruger for at downloade certbot-scriptet til /usr/local/bin biblioteket:

sudo wget -P /usr/local/bin

Når download er afsluttet, skal du gøre filen eksekverbar:

sudo chmod +x /usr/local/bin/certbot-auto

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. Generer et nyt sæt 2048 bit DH-parametre for at styrke sikkerheden:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Du kan ændre størrelsen op til 4096 bit, men genereringen kan tage mere end 30 minutter afhængigt af systemets entropi.

At få et Let's Encrypt SSL-certifikat

For at få et SSL-certifikat for domænet bruger vi 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 opsætningen mere enkel vil vi kortlægge alle HTTP-anmodninger om .well-known/acme-challenge til et enkelt bibliotek, /var/lib/letsencrypt .

Kør følgende kommandoer for at oprette kataloget og gøre det skrivbart 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 at undgå duplikering af kode og gøre konfigurationen mere vedligeholdelig skal du oprette følgende to konfigurationsuddrag:

/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 # Requires Apache 2.4.36 & OpenSSL 1.1.1 SSLProtocol -all +TLSv1.3 +TLSv1.2 SSLOpenSSLConfCmd Curves X25519:secp521r1:secp384r1:prime256v1 # Older versions # 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. Det muliggør OCSP hæftning, HTTP Strict Transport Security (HSTS), Dh-nøgle og håndhæver få sikkerhedsfokuserede

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

sudo systemctl reload

Nu kan du køre certbot script med webroot plugin og hente SSL-certifikatfiler:

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

Efter 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 2020-01-26. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again. To non-interactively renew *all* of your certificates, run "certbot-auto renew" - 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, hvor alt er konfigureret, rediger din domæne-virtuelle host-konfiguration som følger:

/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 Protocols h2 http:/1.1 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/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 /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/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 /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/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 /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/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

Konfigurationen ovenfor tvinger HTTPS og omdirigerer fra www til ikke-www version. Det muliggør også HTTP / 2, hvilket vil gøre dine websteder hurtigere og mere robuste. Bliv fri for at justere konfigurationen efter dine behov.

Genstart Apache-tjenesten:

sudo systemctl restart

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 vi en cronjob, der kører to gange om dagen og automatisk forny ethvert certifikat 30 dage før udløbet.

Kør følgende kommando for at oprette en ny cronjob, der vil fornye certifikatet og genstarte Apache:

echo "0 0, 12 * * * root python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && /usr/local/bin/certbot-auto -q renew --renew-hook \"systemctl reload httpd\"" | sudo tee -a /etc/crontab > /dev/null

Hvis du vil teste fornyelsesprocessen, skal du bruge certbot-kommandoen efterfulgt af - --dry-run :

sudo /usr/local/bin/certbot-auto renew --dry-run

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

Konklusion

I denne tutorial talte vi om, hvordan vi bruger Let's Encrypt-klientcertbot på CentOS til at få SSL-certifikater til dine domæner. Du har også vist dig, hvordan man konfigurerer Apache til at bruge certifikaterne og konfigurere en cronjob til automatisk fornyelse af certifikater.

Hvis du vil vide mere om Certbot-scriptet, skal du besøge Certbot-dokumentationen.

apache centos lad os kryptere certbot ssl