Android

Säkra apache med låt oss kryptera på centos 8

Маша и Медведь - Цирк, да и только? (Серия 67)

Маша и Медведь - Цирк, да и только? (Серия 67)

Innehållsförteckning:

Anonim

Let's Encrypt är en gratis, automatiserad och öppen certifikatutfärdare utvecklad av Internet Security Research Group (ISRG) som tillhandahåller gratis SSL-certifikat.

Certifikat som utfärdats av Let's Encrypt är betrodda av alla större webbläsare och gäller i 90 dagar från utfärdatum.

Denna handledning förklarar hur man installerar ett gratis Let's Encrypt SSL-certifikat på CentOS 8 som kör Apache som en webbserver. Vi använder certbotverktyget för att få och förnya certifikaten.

förutsättningar

Se till att följande förutsättningar uppfylls innan du fortsätter:

  • Har ett domännamn som pekar på din offentliga server-IP. Vi använder exempel.com. Apache är installerat och körs på din server med en virtuell värd konfigurerad för ditt domän. Port 80 och 443 är öppna i din brandvägg.

Installera följande paket som krävs för en SSL-krypterad webbserver:

sudo dnf install mod_ssl openssl

När mod_ssl-paketet är installerat bör det skapa en självsignerad nyckel och certifikatfiler för localhost. Om filerna inte automatiskt skapas kan du skapa dem med kommandot 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

Installera Certbot

Certbot är ett gratis kommandoradsverktyg som förenklar processen för att få och förnya Let's Encrypt SSL-certifikat från och automatiskt aktivera HTTPS på din server.

Certbot-paketet ingår inte i de vanliga CentOS 8-lagren, men det kan laddas ner från leverantörens webbplats.

Kör följande wget kommando som root- eller sudo-användare för att ladda ner certbot-skriptet till /usr/local/bin katalogen:

sudo wget -P /usr/local/bin

När nedladdningen är klar gör filen körbar:

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

Generera Strong Dh (Diffie-Hellman) -gruppen

Diffie – Hellman nyckelutbyte (DH) är en metod för att säkert utbyta kryptografiska nycklar över en osäker kommunikationskanal. Generera en ny uppsättning 2048-bitars DH-parametrar för att stärka säkerheten:

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

Du kan ändra storlek upp till 4096 bitar, men genereringen kan ta mer än 30 minuter beroende på systemets entropi.

Få ett SSL-certifikat för Let's Encrypt

För att få ett SSL-certifikat för domänen kommer vi att använda Webroot-plugin som fungerar genom att skapa en tillfällig fil för validering av den begärda domänen i ${webroot-path}/.well-known/acme-challenge katalogen. Let's Encrypt-servern gör HTTP-förfrågningar till den tillfälliga filen för att bekräfta att den begärda domänen löses till servern där certbot körs.

För att göra installationen enklare kommer vi att kartlägga alla HTTP-förfrågningar för .well-known/acme-challenge till en enda katalog, /var/lib/letsencrypt .

Kör följande kommandon för att skapa katalogen och göra den skrivbar för Apache-servern.

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

För att undvika duplicering av kod och göra konfigurationen mer underhållbar, skapar du följande två konfigurationsavsnitt:

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

Utdraget ovan använder flishuggarna som rekommenderas av Cipherli.st. Det möjliggör OCSP-häftning, HTTP Strict Transport Security (HSTS), Dh-nyckel och upprätthåller få säkerhetsfokuserade

Ladda om Apache-konfigurationen så att ändringar träder i kraft:

sudo systemctl reload

Nu kan du köra certbot-skript med webroot-plugin och hämta SSL-certifikatfilerna:

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

Vid framgång skriver certbot följande meddelande:

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 när allt är konfigurerat redigerar du din virtuella domänkonfiguration på följande sätt:

/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 ovan tvingar HTTPS och omdirigerar från www till icke-www version. Det möjliggör också HTTP / 2, vilket gör dina webbplatser snabbare och mer robusta. Håll dig fri för att justera konfigurationen efter dina behov.

Starta om Apache-tjänsten:

sudo systemctl restart

Du kan nu öppna din webbplats med https:// , och du kommer att märka en grön låsikon.

Automatisk förnyelse av Let's Encrypt SSL-certifikat

Let's Encrypts certifikat är giltiga i 90 dagar. För att automatiskt förnya certifikaten innan de löper ut, skapar vi en cronjob som körs två gånger om dagen och automatiskt förnyar alla certifikat 30 dagar innan det löper ut.

Kör följande kommando för att skapa en ny cronjob som kommer att förnya certifikatet och starta om 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

För att testa förnyelseprocessen använder du certbot-kommandot följt av --dry-run omkopplaren:

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

Om det inte finns några fel betyder det att förnyelseprocessen var framgångsrik.

Slutsats

I den här tutorialen pratade vi om hur vi använder Let's Encrypt-klientcertbot på CentOS för att få SSL-certifikat för dina domäner. Du har också visat hur du konfigurerar Apache för att använda certifikaten och ställa in en cronjob för automatisk certifikatförnyelse.

Om du vill veta mer om Certbot-skriptet besöker du Certbot-dokumentationen.

apache centos låt oss kryptera certbot ssl