Android

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

Queen - Killer Queen (Top Of The Pops, 1974)

Queen - Killer Queen (Top Of The Pops, 1974)

Innehållsförteckning:

Anonim

Let's Encrypt är en gratis, automatiserad och öppen certifikatutfärdare utvecklad av Internet Security Research Group (ISRG). Certifikat som utfärdats av Let's Encrypt är giltiga i 90 dagar från utfärdandedatumet och förlitas av alla stora webbläsare idag.

I denna handledning täcker vi de steg som krävs för att installera ett gratis Let's Encrypt SSL-certifikat på en CentOS 7-server som kör Apache som en webbserver. Vi använder certbot-verktyget för att få och förnya Let's Encrypt-certifikat.

förutsättningar

Se till att du har uppfyllt följande förutsättningar innan du fortsätter med denna handledning:

  • 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. Har Apache virtuell värd för din 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:

yum install mod_ssl openssl

Installera Certbot

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

Certbot-paketet är tillgängligt för installation från EPEL. Om EPEL-lagret inte är installerat på ditt system kan du installera det med följande kommando:

sudo yum install epel-release

När EPEL-lagret är aktiverat installerar du certbot-paketet genom att skriva:

sudo yum install certbot

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 storleken upp till 4096 bitar, men i så fall kan generationen 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 vår domän kommer vi att använda Webroot-plugin som fungerar genom att skapa en tillfällig fil för att validera 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 det enklare kommer vi att kartlägga alla HTTP-begäranden för .well-known/acme-challenge till en enda katalog, /var/lib/letsencrypt .

Kör thr 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 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: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

Utdraget ovan använder flishuggarna som rekommenderas av Cipherli.st, aktiverar OCSP Stapling, HTTP Strict Transport Security (HSTS) och verkställer få säkerhetsfokuserade

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

sudo systemctl reload

Nu kan vi köra Certbot-verktyget med webroot-plugin och få SSL-certifikatfiler genom att skriva:

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

Om SSL-certifikatet erhålls framgångsrikt kommer certbot att skriva ut 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 2018-12-07. 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:

CentOS 7 levereras med Apache version 2.4.6, som inte inkluderar SSLOpenSSLConfCmd direktivet. Detta direktiv är endast tillgängligt på Apache 2.4.8 senare, och det används för konfiguration av OpenSSL-parametrar som Diffie – Hellman key Exchange (DH).

Vi måste skapa en ny kombinerad fil med Let's Encrypt SSL-certifikatet och den genererade DH-filen. För att göra detta skriver du:

cat /etc/letsencrypt/live/example.com/cert.pem /etc/ssl/certs/dhparam.pem >/etc/letsencrypt/live/example.com/cert.dh.pem

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 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/cert.dh.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem # Other Apache Configuration ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com 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/cert.dh.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem # Other Apache Configuration ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com 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/cert.dh.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem # Other Apache Configuration ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com 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/cert.dh.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem # Other Apache Configuration

Med konfigurationen ovan tvingar vi HTTPS och omdirigerar från www till icke-www version. Håll dig fri för att justera konfigurationen efter dina behov.

Starta om Apache-tjänsten så att ändringarna träder i kraft:

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 crontab kommandot för att skapa en ny cronjob som kommer att förnya certifikatet, skapa en ny kombinerad fil inklusive DH-nyckeln och starta om apache:

sudo crontab -e

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

Spara och stäng filen.

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

sudo certbot renew --dry-run

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

Slutsats

I den här handledningen använde vi Let's Encrypt-klientens certbot för att ladda ner SSL-certifikat för din domän. Du har också skapat Apache-utdrag för att undvika duplicering av kod och konfigurerat Apache för att använda certifikaten. I slutet av självstudien har du skapat en cronjob för automatisk förnyelse av certifikat.

apache centos låt oss kryptera certbot ssl

Det här inlägget är en del av Install LAMP Stack i CentOS 7-serien.

Andra inlägg i denna serie:

• Hur man installerar Apache på CentOS 7 • Installera MySQL på CentOS 7 • Hur man ställer in Apache virtuella värdar på CentOS 7 • Säkra Apache med Let's Encrypt på CentOS 7