Android

Osigurajte apache uz šifriranje na centos 8

Hadoop Rack Awareness

Hadoop Rack Awareness

Sadržaj:

Anonim

Let's Encrypt je besplatno, automatizirano i otvoreno tijelo certifikata koje je razvila Internet Security Research Group (ISRG) koja pruža besplatne SSL certifikate.

Certifikati izdani Let's Encrypt vjeruju svi glavni preglednici i vrijede 90 dana od datuma izdavanja.

Ovaj vodič objašnjava kako instalirati besplatni kriptirani SSL certifikat na CentOS 8 koji pokreće Apache kao web poslužitelj. Koristit ćemo alat certbot za dobivanje i obnovu certifikata.

Preduvjeti

Prije nastavka osigurajte da su ispunjeni sljedeći preduvjeti:

  • Ime domene pokazuje na IP vašeg javnog poslužitelja. Koristit ćemo example.com Apache se instalira i pokreće na vašem poslužitelju s virtualnim hostom konfiguriranim za vašu domenu.Portovi 80 i 443 su otvoreni u vašem vatrozidu.

Instalirajte sljedeće pakete koji su potrebni za SSL šifrirani web poslužitelj:

sudo dnf install mod_ssl openssl

Kad se instalira paket mod_ssl, trebao bi stvoriti datoteke s ključem i potvrdama s vlastitim potpisom za localhost. Ako se datoteke ne stvore automatski, možete ih kreirati pomoću naredbe 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

Instalirajte Certbot

Certbot je besplatni alat naredbenog retka koji pojednostavljuje postupak dobivanja i obnavljanja Šifrirajmo SSL certifikate i automatski omogućujući HTTPS na vašem poslužitelju.

Certbot paket nije uključen u standardna CentOS 8 spremišta, ali može se preuzeti s web mjesta dobavljača.

Izvedite sljedeću naredbu wget kao root ili sudo korisnik da biste preuzeli skriptu certbot u direktorij /usr/local/bin :

sudo wget -P /usr/local/bin

Nakon dovršetka preuzimanja napravite datoteku izvršnom:

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

Stvaranje snažne Dh (Diffie-Hellman) grupe

Razmjena ključeva Diffie-Hellman (DH) metoda je sigurne razmjene kriptografskih ključeva preko nezaštićenog komunikacijskog kanala. Stvorite novi set 2048 bitnih DH parametara za jačanje sigurnosti:

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

Možete promijeniti veličinu do 4096 bita, ali generacija može potrajati više od 30 minuta, ovisno o entropiji sustava.

Dobivanje šifriramo SSL certifikat Let's Šifriraj

Za dobivanje SSL certifikata za domenu koristit ćemo Webroot dodatak koji djeluje stvaranjem privremene datoteke za provjeru tražene domene u ${webroot-path}/.well-known/acme-challenge direktoriju ${webroot-path}/.well-known/acme-challenge . Poslužitelj Let's Encrypt postavlja HTTP zahtjeve u privremenu datoteku kako bi potvrdio da se zatražena domena rješava na poslužitelju na kojem se pokreće certbot.

Da bismo postavili jednostavniju postavku ćemo preslikati sve HTTP zahtjeve za .well-known/acme-challenge u jedan direktorij, /var/lib/letsencrypt .

Pokrenite sljedeće naredbe za stvaranje direktorija i učinite ga upisljivim za Apache poslužitelj.

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

Da biste izbjegli dupliciranje koda i učinili konfiguraciju održivijom, izradite sljedeće isječke konfiguracije:

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

Gornji isječak koristi sječiće koje preporučuje Cipherli.st. Omogućuje OCSP spajanje, HTTP strogu sigurnost prometa (HSTS), tipku Dh i nameće nekoliko HTTP zaglavlja usmjerenih na sigurnost.

Učitajte ponovo Apache konfiguraciju da bi promjene stupile na snagu:

sudo systemctl reload

Sada možete pokrenuti certbot skriptu s webroot dodatkom i preuzeti datoteke SSL certifikata:

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

Nakon uspjeha, certbot će ispisati sljedeću poruku:

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:

Sada kada je sve postavljeno, uredite konfiguraciju virtualnog računala svog doma na sljedeći način:

/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

Gornja konfiguracija forsira HTTPS i preusmjeravanje s www na verziju koja nije www. Također omogućuje HTTP / 2, što će vaše web stranice učiniti bržim i robusnijim. Slobodno prilagođavajte konfiguraciju prema vašim potrebama.

Ponovno pokrenite Apache uslugu:

sudo systemctl restart

Sada možete otvoriti svoju web stranicu pomoću https:// i primijetit ćete zelenu ikonu zaključavanja.

Automatska obnova Let's Šifriraj SSL certifikat

Neka šifriraju potvrde vrijede 90 dana. Da bismo automatski obnovili certifikate prije njihovog isteka, stvorit ćemo cronjob koji će se izvoditi dva puta dnevno i automatski ćemo obnoviti bilo koji certifikat 30 dana prije njegovog isteka.

Pokrenite sljedeću naredbu da stvorite novi cronjob koji će obnoviti certifikat i ponovo pokrenuti 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

Za testiranje postupka obnove upotrijebite naredbu certbot nakon koje slijedi prekidač - sušenje --dry-run :

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

Ako nema pogrešaka, to znači da je proces obnove bio uspješan.

Zaključak

U ovom smo vodiču razgovarali o tome kako koristiti programski program Let's Encrypt klijenta na CentOS-u za dobivanje SSL certifikata za vaše domene. Pokazali ste i kako konfigurirati Apache za korištenje certifikata i postaviti cronjob za automatsku obnovu certifikata.

Da biste saznali više o skriptu Certbot, posjetite Certbot dokumentaciju.

apache centos hajmo šifrirati certbot ssl