Android

Veilige apache met laten we coderen op centos 7

APACHE STORM | ARMA 3 - Cinematic Mission

APACHE STORM | ARMA 3 - Cinematic Mission

Inhoudsopgave:

Anonim

Let's Encrypt is een gratis, geautomatiseerde en open certificaatautoriteit ontwikkeld door de Internet Security Research Group (ISRG). Certificaten uitgegeven door Let's Encrypt zijn 90 dagen geldig vanaf de uitgiftedatum en worden tegenwoordig door alle belangrijke browsers vertrouwd.

In deze tutorial behandelen we de stappen die nodig zijn om een ​​gratis Let's Encrypt SSL-certificaat te installeren op een CentOS 7-server met Apache als webserver. We gebruiken het hulpprogramma certbot om Let's Encrypt-certificaten te verkrijgen en te vernieuwen.

voorwaarden

Zorg ervoor dat u aan de volgende voorwaarden hebt voldaan voordat u doorgaat met deze zelfstudie:

  • Zorg dat een domeinnaam verwijst naar het IP-adres van uw openbare server. We gebruiken example.com Apache is geïnstalleerd en wordt op uw server uitgevoerd. Heb een virtuele Apache-host voor uw domein. De poorten 80 en 443 zijn geopend in uw firewall.

Installeer de volgende pakketten die vereist zijn voor een SSL-gecodeerde webserver:

yum install mod_ssl openssl

Certbot installeren

Certbot is een hulpmiddel dat het proces vereenvoudigt voor het verkrijgen van SSL-certificaten van Let's Encrypt en het automatisch inschakelen van HTTPS op uw server.

Het certbot-pakket kan worden geïnstalleerd vanaf EPEL. Als de EPEL-repository niet op uw systeem is geïnstalleerd, kunt u deze installeren met de volgende opdracht:

sudo yum install epel-release

Nadat de EPEL-repository is ingeschakeld, installeert u het certbot-pakket door het volgende te typen:

sudo yum install certbot

Genereer Strong Dh (Diffie-Hellman) Group

Diffie-Hellman-sleuteluitwisseling (DH) is een methode voor het veilig uitwisselen van cryptografische sleutels via een onbeveiligd communicatiekanaal. Genereer een nieuwe set 2048 bit DH-parameters om de beveiliging te versterken:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 U kunt de grootte wijzigen tot 4096 bits, maar in dat geval kan het genereren meer dan 30 minuten duren, afhankelijk van de entropie van het systeem.

Het verkrijgen van een Let's Encrypt SSL-certificaat

Om een ​​SSL-certificaat voor ons domein te verkrijgen, gaan we de Webroot-plug-in gebruiken die werkt door een tijdelijk bestand te maken voor het valideren van het aangevraagde domein in de ${webroot-path}/.well-known/acme-challenge . De Let's Encrypt-server doet HTTP-aanvragen bij het tijdelijke bestand om te valideren dat het aangevraagde domein wordt opgelost naar de server waarop certbot wordt uitgevoerd.

Om het eenvoudiger te maken, gaan we alle HTTP-aanvragen voor .well-known/acme-challenge /var/lib/letsencrypt aan een enkele map, /var/lib/letsencrypt .

Voer de volgende opdrachten uit om de map te maken en schrijfbaar te maken voor de Apache-server:

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

Maak de volgende twee configuratiefragmenten om dubbele code te voorkomen:

/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

Het bovenstaande fragment gebruikt de chippers die worden aanbevolen door Cipherli.st, maakt OCSP nieten, HTTP Strict Transport Security (HSTS) mogelijk en dwingt weinig op beveiliging gerichte HTTP-headers af.

Laad de Apache-configuratie opnieuw om de wijzigingen door te voeren:

sudo systemctl reload

Nu kunnen we de Certbot-tool met de webroot-plug-in uitvoeren en de SSL-certificaatbestanden verkrijgen door te typen:

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

Als het SSL-certificaat met succes is verkregen, zal certbot het volgende bericht afdrukken:

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 wordt geleverd met Apache-versie 2.4.6, die niet de SSLOpenSSLConfCmd richtlijn bevat. Deze richtlijn is later alleen beschikbaar op Apache 2.4.8 en wordt gebruikt voor de configuratie van OpenSSL-parameters zoals Diffie-Hellman key exchange (DH).

We moeten een nieuw gecombineerd bestand maken met behulp van het Let's Encrypt SSL-certificaat en het gegenereerde DH-bestand. Typ hiervoor:

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

Nu alles is ingesteld, kunt u de configuratie van uw virtuele domeinhost als volgt bewerken:

/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

Met de bovenstaande configuratie dwingen we HTTPS en verwijzen we door van www naar een niet-www-versie. Voel je vrij om de configuratie aan te passen aan jouw behoeften.

Start de Apache-service opnieuw om de wijzigingen door te voeren:

sudo systemctl restart

U kunt nu uw website openen met https:// en u ziet een groen slotpictogram.

Automatisch vernieuwen Let's Encrypt SSL-certificaat

De certificaten van Let's Encrypt zijn 90 dagen geldig. Om de certificaten automatisch te verlengen voordat ze verlopen, maken we een cronjob die twee keer per dag wordt uitgevoerd en automatisch elk certificaat 30 dagen vóór de vervaldatum vernieuwt.

Voer de opdracht crontab uit om een ​​nieuwe cronjob te maken waarmee het certificaat wordt vernieuwd, een nieuw gecombineerd bestand met de DH-sleutel wordt gemaakt en apache opnieuw wordt gestart:

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

Sla het bestand op en sluit het.

Om het vernieuwingsproces te testen, kunt u de certbot-opdracht gebruiken, gevolgd door de --dry-run schakelaar:

sudo certbot renew --dry-run

Als er geen fouten zijn, betekent dit dat het vernieuwingsproces succesvol was.

Conclusie

In deze zelfstudie hebt u de Let's Encrypt-clientcertificbot gebruikt om SSL-certificaten voor uw domein te downloaden. U hebt ook Apache-fragmenten gemaakt om dubbele code te voorkomen en Apache geconfigureerd om de certificaten te gebruiken. Aan het einde van de zelfstudie hebt u een cronjob ingesteld voor automatische certificaatverlenging.

apache centos laten we certbot ssl coderen

Dit bericht maakt deel uit van de LAMP Stack op CentOS 7-serie installeren.

Andere berichten in deze serie:

• Hoe Apache op CentOS 7 te installeren • MySQL op CentOS 7 te installeren • Hoe Apache Virtual Hosts op CentOS 7 in te stellen • Veilige Apache met Let's Encrypt op CentOS 7