HTTPS-i seadistamine krüpteerime Nginxi jaoks SSL-sertifikaadi RHEL/CentOS 7/6 -s


Järgides varem krüpteeritud seeriat, mis puudutab Apache või Nginxi veebiserverit SSL/TLS-mooduliga, juhendame teid selles artiklis, kuidas genereerida ja installida SSL-i/TLS-i sertifikaat, mis on tasuta saadaval Let's Encrypt Certificate Authority'ilt, mida me kasutame Nginxi veebiserveri HTTP-tehingute kindlustamiseks CentOS/RHEL 7/6 ja Fedora jaotuses.

Kui soovite installida rakenduse Let’s Encrypt for Apache RHEL/CentOS 7/6 ja Fedora jaotustesse, järgige järgmist juhendit:

  1. Registreeritud domeeninimi koos kehtiva DNS-i kirjetega, et suunata tagasi serveri avalikule IP-aadressile.
  2. Nginxi veebiserver on installitud, kui SSL on lubatud ja virtuaalsed hostid lubatud (ainult mitme domeeni või alamdomeeni majutamiseks).

1. samm: installige Nginxi veebiserver

1. Esimeses etapis andke Nginxi veebiserveri installimiseks Epeli hoidlatest välja järgmised õigused rootoriõigustega:

# yum install epel-release
# yum install nginx

2. samm: laadige alla või kloonige tasuta. Krüpteerime SSL-sertifikaadi

2. Kiireim viis kliendi Linuxi süsteemidesse installimiseks kloonides paketid githubi hoidlatest.

Kõigepealt installige süsteemi git klient järgmise käsuga:

# yum install git

3. Pärast git-kliendi installimist muutke kataloog /opt teeks ja tõmmake tarkvara Krüptime, käivitades järgmised käsud:

# cd /opt
# git clone https://github.com/letsencrypt/letsencrypt

3. samm: genereerige Nginxi jaoks tasuta krüpteeritav SSL-sertifikaat

4. Nginxi jaoks tasuta SSL/TLS-sertifikaadi hankimise protsess toimub käsitsi, kasutades Let’s Encrypt Standalone pluginat.

See meetod eeldab, et port 80 peab olema vaba aja jooksul, mil Let’s Encrypt klient valib serveri identiteedi ja genereerib sertifikaadid.

Niisiis, kui Nginx juba töötab, peatage deemon järgmise käsuga ja käivitage utiliit ss , et veenduda, et porti 80 ei kasutata enam võrgupakis.

# service nginx stop
# systemctl stop nginx
# ss -tln

5. Nüüd on aeg hankida Let’s Encryptilt tasuta SSL-sertifikaat. Kui te pole veel seal, kolime installikataloogi Krüpteerime ja käivitage käsk letsencrypt-auto , kasutades valikut certonly --standalone ja -d lipp iga domeeni või alamdomeeni jaoks, mille kohta soovite sertifikaadi luua, nagu soovitatud allpool toodud näites.

# cd /opt
# ./letsencrypt-auto certonly --standalone -d your_domain.tld -d www.yourdomain.tld

6. Pärast seda, kui arvutisse on installitud mitu paketti ja sõltuvust, palub Let’s Encrypt teil sisestada oma konto, mida kasutatakse kaotatud võtmete taastamiseks või kiirete teadete saamiseks.

7. Järgmisena peaksite nõustuma litsentsitingimustega, vajutades sisestusklahvi.

8. Lõpuks, kui kõik läks nii, nagu peaks, kuvatakse teie bashi terminalis õnnitluse infosõnum. Sõnumit kuvatakse ka siis, kui sertifikaat aegub.

4. samm: installime Let’s Encrypt SSL Certificate Nginxi

9. Nüüd, kui teile kuulub tasuta SSL/TLS-sertifikaat, on aeg installida see Nginxi veebiserverisse, et teie domeen seda saaks kasutada.

Kõik uued SSL-sertifikaadid paigutatakse kausta /etc/letsencrypt/live/ teie domeeninime järgi nimetatud kataloogi. Kasutage käsku ls oma domeeni jaoks välja antud sertifikaadifailide loetlemiseks ja nende tuvastamiseks.

# sudo ls /etc/letsencrypt/live/
# sudo ls -al /etc/letsencrypt/live/your_domain.tld

10. Sertifikaadifailide installimiseks Nginxi ja SSL-i lubamiseks avage redigeerimiseks fail /etc/nginx/nginx.conf ja lisage alljärgnevad avaldused pärast serveriploki viimast kuulamisrida. Kasutage juhendina allolevat illustratsiooni.

# vi /etc/nginx/nginx.conf

Nginxi SSL-i ploki väljavõte:

# SSL configuration
listen 443 ssl default_server;
ssl_certificate /etc/letsencrypt/live/your_domain.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain.tld/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

Asendage SSL-i sertifikaatide domeeninime string oma domeenile vastavaks.

11. Lõpuks taaskäivitage Nginxi teenus ja külastage oma domeeni HTTPS-protokolli kaudu aadressil https:/yourdomain . Leht peaks laadima sujuvalt, ilma sertifikaadiveata.

# systemctl restart nginx
# service nginx restart

12. SSL/TLS-sertifikaadi ja selle õigsuse kontrollimiseks külastage järgmist linki:

https://www.ssllabs.com/ssltest/analyze.html 

13. Juhul kui saate teate, et teie server toetab nõrka DH-võtmevahetust ja üldhinnangut B-klass, genereerige kataloogis/etc/nginx/ssl/kataloogis uus Diffie-Hellmani šifr, et kaitsta oma serverit Logjami rünnaku eest järgmiste käskude käivitamine.

# mkdir /etc/nginx/ssl
# cd /etc/nginx/ssl
# openssl dhparam -out dhparams.pem 4096

Selles näites oleme kasutanud 4096-bitist võtit, mille loomine võtab tegelikult kaua aega ning lisab teie serverile ja SSL-i käepigistusele lisakulu.

Kui pole selget vajadust võtit nii kaua kasutada ja te ei ole paranoiline, peaksite olema 2048-bitise võtmega turvaline.

14. Pärast DH-võtme loomist avage Nginxi konfiguratsioonifail ja lisage allpool olevad laused rea ssl_ciphers järele, et lisada DH-võti ja tõsta oma domeeni turvatase A + hinne.

# vi /etc/nginx/nginx.conf

Lisage järgmine ploki väljavõte saidile Nginx.conf:

ssl_dhparam /etc/nginx/ssl/dhparams.pem;
ssl_session_timeout 30m;
ssl_session_cache shared:SSL:10m;
ssl_buffer_size 8k;
add_header Strict-Transport-Security max-age=31536000;

15. Taaskäivitage Nginxi teenus muudatuste rakendamiseks ja SSL-sertifikaadi uuesti testimiseks, tühjendades eelmise tulemuste vahemälu ülalnimetatud lingilt.

# systemctl restart nginx
# service nginx restart

5. samm: Nginx Free'i automaatne uuendamine võimaldab krüptida SSL-sertifikaate

16. Let's Encrypt CA väljastab tasuta SSL/TLS-sertifikaadid, mis kehtivad 90 päeva. Sertifikaate saab enne aegumist käsitsi uuendada ja rakendada veebijuure pistikprogrammi abil, peatamata veebiserverit, väljastades järgmised käsud:

# ./letsencrypt-auto certonly -a webroot --agree-tos --renew-by-default --webroot-path=/usr/share/nginx/html/ -d yourdomain.tld -d www.yourdomain.tld
# systemctl reload nginx

Ülaltoodud käsu käivitamisel veenduge, et asendate veebijuure tee , et see vastaks veebiserveri dokumendi juurele, mille määrab Nginxi juurlause.

17. Sertifikaadi automaatseks uuendamiseks enne selle kehtivuse lõppemist looge see bashi skript github erikaheidist kataloogis/usr/local/bin/kataloog ja lisage allpool olev sisu (skript, mida on veidi muudetud, et kajastada Nginxi sätteid).

# vi /usr/local/bin/cert-renew

Lisage failile cert-uuenda järgmised read.

#!/bin/bash

webpath='/usr/share/nginx/html/'
domain=$1
le_path='/opt/letsencrypt'
le_conf='/etc/letsencrypt'
exp_limit=30;

get_domain_list(){
        certdomain=$1
        config_file="$le_conf/renewal/$certdomain.conf"

        if [ ! -f $config_file ] ; then
                echo "[ERROR] The config file for the certificate $certdomain was not found."
                exit 1;
        fi

        domains=$(grep --only-matching --perl-regex "(?<=domains \= ).*" "${config_file}")
        last_char=$(echo "${domains}" | awk '{print substr($0,length,1)}')

        if [ "${last_char}" = "," ]; then
                domains=$(echo "${domains}" |awk '{print substr($0, 1, length-1)}')
        fi

        echo $domains;
}

if [ -z "$domain" ] ; then
        echo "[ERROR] you must provide the domain name for the certificate renewal."
        exit 1;
fi

cert_file="/etc/letsencrypt/live/$domain/fullchain.pem"

if [ ! -f $cert_file ]; then
        echo "[ERROR] certificate file not found for domain $domain."
        exit 1;
fi

exp=$(date -d "`openssl x509 -in $cert_file -text -noout|grep "Not After"|cut -c 25-`" +%s)
datenow=$(date -d "now" +%s)
days_exp=$(echo \( $exp - $datenow \) / 86400 |bc)

echo "Checking expiration date for $domain..."

if [ "$days_exp" -gt "$exp_limit" ] ; then
        echo "The certificate is up to date, no need for renewal ($days_exp days left)."
        exit 0;
else
        echo "The certificate for $domain is about to expire soon. Starting renewal request..."
        domain_list=$( get_domain_list $domain )
"$le_path"/letsencrypt-auto certonly -a webroot --agree-tos --renew-by-default --webroot-path=”$webpath” --domains "${domain_list}"
        echo "Reloading Nginx..."
sudo systemctl reload nginx
        echo "Renewal process finished for domain $domain"
        exit 0;
fi

18. Asendage muutuja $webpath skripti algusest, et see vastaks teie Nginxi dokumendi juurele. Veenduge, et skript on käivitatav ja kalkulaator bc on teie süsteemi installitud, väljastades järgmised käsud.

# chmod +x /usr/local/bin/cert-renew
# yum install bc

Skripti saate testida oma domeeni suhtes, väljastades järgmise käsu:

# /usr/local/bin/cert-renew yourdomain.tld


19. Lõpuks, sertifikaatide uuendamise protsessi automaatseks käivitamiseks lisage skripti igal nädalal käivitamiseks uus croni töö, et värskendada sertifikaati 30 päeva jooksul enne aegumiskuupäeva.

# crontab -e

Lisage järgmine rida faili lõppu.

@weekly  /usr/local/bin/cert-renew your_domain.tld >> /var/log/your_domain.tld-renew.log 2>&1

See on kõik! Nüüd saab Nginxi server pakkuda teie veebisaidil turvalist veebisisu tasuta SSL/TLS Let’s Encrypt -sertifikaadiga.