Android

Sikker apache med lad os kryptere på centos 7

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). Certifikater udstedt af Let's Encrypt er gyldige i 90 dage fra udstedelsesdatoen og er tillid til alle de store browsere i dag.

I denne tutorial dækker vi de trin, der er nødvendige for at installere et gratis Let's Encrypt SSL-certifikat på en CentOS 7-server, der kører Apache som en webserver. Vi bruger certbot-værktøjet til at hente og fornye Let's Encrypt-certifikater.

Forudsætninger

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

  • Har et domænenavn, der peger på din offentlige server-IP. Vi bruger example.com Apache er installeret og kører på din server. Har den virtuelle Apache-vært 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:

yum install mod_ssl openssl

Installer Certbot

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

Certbot-pakken er tilgængelig til installation fra EPEL. Hvis EPEL-arkivet ikke er installeret på dit system, kan du installere det ved hjælp af følgende kommando:

sudo yum install epel-release

Når EPEL-arkivet er aktiveret, skal du installere certbot-pakken ved at skrive:

sudo yum 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. 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 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 .

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

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

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

sudo systemctl reload

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-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 leveres med Apache version 2.4.6, som ikke inkluderer SSLOpenSSLConfCmd direktivet. Dette direktiv er kun tilgængeligt på Apache 2.4.8 senere, og det bruges til konfiguration af OpenSSL-parametre såsom Diffie – Hellman key exchange (DH).

Vi bliver nødt til at oprette en ny kombineret fil ved hjælp af Let's Encrypt SSL-certifikat og den genererede DH-fil. For at gøre dette, skriv:

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

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

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

sudo systemctl restart

Du kan nu åbne dit websted ved hjælp af https:// og du vil bemærke 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 det udløber.

Kør crontab kommandoen for at oprette en ny cronjob, der vil fornye certifikatet, oprette en ny kombineret fil inklusive DH-nøglen og genstarte 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

Gem og luk filen.

For at teste fornyelsesprocessen kan du bruge certbot-kommandoen efterfulgt af - --dry-run :

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 centos lad os kryptere certbot ssl

Dette indlæg er en del af Install LAMP Stack i CentOS 7-serien.

Andre indlæg i denne serie:

• Sådan installeres Apache på CentOS 7 • Installer MySQL på CentOS 7 • Sådan installeres Apache virtuelle værter på CentOS 7 • Sikker Apache med Let's Encrypt på CentOS 7