Uppsetning HTTPS með Let's Encrypt SSL vottorð fyrir Nginx á RHEL/CentOS 7/6


Í kjölfar fyrri Let's Encrypt röð varðandi Apache eða Nginx vefþjón með SSL/TLS mát, þá munum við leiðbeina þér um hvernig á að búa til og setja upp SSL/TLS vottorð sem fæst ókeypis frá Let's Encrypt Certificate Authority sem við munum nota til að tryggja Nginx vefþjón HTTP viðskipti á CentOS/RHEL 7/6 og Fedora dreifingu.

Ef þú ert að leita að því að setja upp Let's Encrypt for Apache á RHEL/CentOS 7/6 og Fedora dreifingum, fylgdu þessari handbók hér að neðan:

  1. Skráð lén með gildum A DNS færslum til að vísa til almennings IP tölu netþjóns.
  2. Nginx vefþjónn settur upp með SSL virkt og sýndargestgjafar virkt (aðeins fyrir mörg lén eða undirléna hýsingu).

Skref 1: Settu upp Nginx vefþjón

1. Í fyrsta skrefi, ef þú ert ekki með Nginx púkinn þegar uppsettan, gefðu út skipanirnar hér að neðan með rótarréttindum til að setja upp Nginx vefþjón frá Epel geymslum:

# yum install epel-release
# yum install nginx

Skref 2: Sæktu eða klónaðu ókeypis Let's Encrypt SSL Certificate

2. Hraðasta aðferðin til að setja Let's Encrypt biðlara upp á Linux kerfum með því að klóna pakkana frá github geymslum.

Settu fyrst upp git viðskiptavin á kerfinu með skipuninni hér að neðan:

# yum install git

3. Eftir að git biðlari hefur verið settur upp skaltu breyta möppu í /opt slóð og draga Let's Encrypt hugbúnaðinn með því að keyra eftirfarandi skipanir:

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

Skref 3: Búðu til ókeypis Let's Encrypt SSL vottorð fyrir Nginx

4. Ferlið við að fá ókeypis SSL/TLS vottorð fyrir Nginx verður gert handvirkt með því að nota Let's Encrypt Standalone tappi.

Þessi aðferð krefst þess að höfn 80 verður að vera laus á þeim tíma sem Let's Encrypt viðskiptavinur staðfestir auðkenni þjónsins og býr til skilríki.

Svo, ef Nginx er þegar í gangi, stöðvaðu púkann með eftirfarandi skipun og keyrðu ss tólið til að staðfesta að port 80 sé ekki lengur í notkun í netstafla.

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

5. Nú er kominn tími til að fá ókeypis SSL vottorð frá Let's Encrypt. Farðu í Let's Encrypt uppsetningarskrána, ef þú ert ekki þegar þar, og keyrðu letsencrypt-auto skipunina með certonly --standalone valkostinum og -d< /kóði> fána fyrir hvert lén eða undirlén sem þú vilt búa til vottorð eins og lagt er til í dæminu hér að neðan.

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

6. Eftir að röð pakka og ósjálfstæðis hefur verið sett upp á vélinni þinni mun Let's Encrypt biðja þig um að slá inn reikninginn þinn sem verður notaður til að endurheimta týndan lykil eða brýnar tilkynningar.

7. Næst skaltu samþykkja leyfisskilmálana með því að ýta á Enter takkann.

8. Að lokum, ef allt gekk eins og það ætti að gera, mun hamingjuóskunarskilaboð birtast á bash flugstöðinni þinni. Skilaboðin munu einnig birtast þegar vottorðið rennur út.

Skref 4: Settu upp Let's Encrypt SSL Certificate í Nginx

9. Nú þegar þú átt ókeypis SSL/TLS vottorð er kominn tími til að setja það upp á Nginx vefþjóni til að lénið þitt geti notað það.

Öll ný SSL vottorð eru sett í /etc/letsencrypt/live/ undir möppu sem heitir eftir léninu þínu. Notaðu ls skipunina til að skrá skírteinisskrárnar sem gefnar eru út fyrir lénið þitt og auðkenna þær.

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

10. Til að setja upp skírteinisskrárnar í Nginx og virkja SSL, opnaðu /etc/nginx/nginx.conf skrána til að breyta og bættu við neðangreindum yfirlýsingum eftir síðustu hlustunarlínu frá netþjónsblokk. Notaðu myndina hér að neðan sem leiðbeiningar.

# vi /etc/nginx/nginx.conf

Nginx SSL blokk útdráttur:

# 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';

Skiptu um lénsstrenginn fyrir SSL vottorð til að passa við þitt eigið lén.

11. Að lokum skaltu endurræsa Nginx þjónustuna og heimsækja lénið þitt í gegnum HTTPS samskiptareglur á https://yourdomain. Síðan ætti að hlaðast slétt, án vottorðsvillu.

# systemctl restart nginx
# service nginx restart

12. Til að staðfesta SSL/TLS vottorðið og réttleika þess skaltu fara á eftirfarandi hlekk:

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

13. Ef þú færð tilkynningu um að þjónninn þinn styður veikburða DH lyklaskipti og heildareinkunnina B einkunn, búðu til nýjan Diffie-Hellman dulmál í /etc/nginx/ssl/ möppu til að vernda netþjóninn þinn gegn Logjam árásinni keyra eftirfarandi skipanir.

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

Í þessu dæmi höfum við notað 4096 bita lykil, sem tekur í raun langan tíma að búa til og setur aukakostnað á netþjóninn þinn og á SSL handabandi.

Ef það er engin bein þörf á að nota svona langan lykil og þú ert ekki of vænisjúkur ættirðu að vera öruggur með 2048 bita lykil.

14. Eftir að DH lykill hefur verið myndaður, opnaðu Nginx stillingarskrána og bættu eftirfarandi yfirlýsingum við eftir ssl_ciphers línuna til að bæta við DH lyklinum og hækka öryggisstig lénsins þíns í A+< /kóði> bekk.

# vi /etc/nginx/nginx.conf

Bættu eftirfarandi blokkarútdrætti við 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. Endurræstu Nginx þjónustuna til að beita breytingum og prófaðu SSL vottorðið þitt aftur með því að hreinsa fyrri niðurstöðu skyndiminni af hlekknum sem nefndur er hér að ofan.

# systemctl restart nginx
# service nginx restart

Skref 5: Sjálfvirk endurnýjun Nginx ókeypis gerir kleift að dulkóða SSL vottorð

16. Let's Encrypt CA gefur út ókeypis SSL/TLS vottorð sem gilda í 90 daga. Hægt er að endurnýja skírteini handvirkt og nota áður en þau renna út með því að nota webroot viðbótina, án þess að stöðva vefþjóninn þinn, með því að gefa út eftirfarandi skipanir:

# ./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

Þegar þú keyrir ofangreind skipun skaltu ganga úr skugga um að þú skiptir um webroot-path til að passa við skjalrót vefþjónsins þíns, tilgreind með Nginx rótaryfirlýsingu.

17. Til þess að endurnýja vottorðið sjálfkrafa áður en það rennur út, búðu til þetta bash forskrift frá github erikaheidi í /usr/local/bin/ möppunni og bættu við neðangreindu innihaldi (forskriftinni það er aðeins breytt til að endurspegla Nginx stillingu).

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

Bættu eftirfarandi línum við cert-renew skrána.

#!/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. Skiptu um $webpath breytu frá upphafi skriftunnar til að passa við Nginx skjalrótina þína. Gakktu úr skugga um að handritið sé keyranlegt og að bc reiknivélin sé uppsett á kerfinu þínu með því að gefa út eftirfarandi skipanir.

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

Þú getur prófað handritið gegn léninu þínu með því að gefa út eftirfarandi skipun:

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


19. Að lokum, til að keyra endurnýjunarferlið skírteinis sjálfkrafa, skaltu bæta við nýju cron-verki til að framkvæma handritið í hverri viku til að uppfæra vottorðið innan 30 daga fyrir gildistíma.

# crontab -e

Bættu við eftirfarandi línu neðst í skránni.

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

Það er allt og sumt! Nú getur Nginx netþjónn afhent öruggt vefefni með ókeypis SSL/TLS Let's Encrypt vottorði á vefsíðunni þinni.


Allur réttur áskilinn. © Linux-Console.net • 2019-2024