Twaqqif ta' HTTPS b'Ejja Encrypt SSL Ċertifikat Għal Nginx fuq RHEL/CentOS 7/6
Wara s-serje ta' Let's Encrypt ta' qabel dwar Apache jew Nginx web server b'modulu SSL/TLS, dan l-artikolu ser niggwidawk dwar kif tiġġenera u tinstalla ċertifikat SSL/TLS miksub b'xejn minn Let's Encrypt Certificate Authority li se nkunu qed nużaw biex tiżgura tranżazzjonijiet HTTP tas-server tal-web Nginx fuq CentOS/RHEL 7/6 u distribuzzjoni Fedora.
Jekk qed tfittex li tinstalla Let's Encrypt għal Apache fuq distribuzzjonijiet RHEL/CentOS 7/6 u Fedora, segwi din il-gwida hawn taħt:
- Isem ta' dominju reġistrat b'rekords A DNS validi biex jindikaw lura lejn l-Indirizz IP pubbliku tas-server.
- Server tal-web Nginx installat b'SSL attivat u Hosts Virtwali attivati (biss għal oqsma multipli jew sottodominji hosting).
Pass 1: Installa Nginx Web Server
1. Fuq l-ewwel pass, f'każ li m'għandekx Nginx daemon diġà installat, agħti l-kmandi hawn taħt bi privileġġi ta 'l-għeruq sabiex tinstalla Nginx webserver mir-repożitorji Epel:
# yum install epel-release # yum install nginx
Pass 2: Niżżel jew Ikklona Ħieles Ejja Kriptaġġ Ċertifikat SSL
2. L-iktar metodu mgħaġġel ta 'installazzjoni tal-klijent Let's Encrypt fuq sistemi Linux billi tikklona l-pakketti minn repożitorji github.
L-ewwel, installa git client fuq is-sistema bil-kmand hawn taħt:
# yum install git
3. Wara li l-klijent git ikun ġie installat, ibdel id-direttorju għal /opt
path u iġbed Let's Encrypt software billi tħaddem il-kmandi hawn taħt:
# cd /opt # git clone https://github.com/letsencrypt/letsencrypt
Pass 3: Iġġenera Ċertifikat SSL Ejja Kriptaġġ Ħieles għal Nginx
4. Il-proċess tal-kisba ta 'Ċertifikat SSL/TLS b'xejn għal Nginx se jsir manwalment billi tuża plugin Let's Encrypt Standalone.
Dan il-metodu jeħtieġ li l-port 80 għandu jkun ħieles matul iż-żmien li l-klijent Let's Encrypt jivvalida l-identità tas-server u jiġġenera ċertifikati.
Allura, jekk Nginx diġà qed jaħdem, waqqaf id-daemon bil-kmand li ġej u ħaddem l-utilità ss
biex tikkonferma li l-port 80 m'għadux jintuża fil-munzell tan-netwerk.
# service nginx stop # systemctl stop nginx # ss -tln
5. Issa wasal iż-żmien li tikseb Ċertifikat SSL b'xejn minn Let's Encrypt. Imxi fid-direttorju tal-installazzjoni Let's Encrypt, jekk m'intix diġà hemm, u mexxi l-kmand letsencrypt-auto
bl-għażla certonly --standalone
u -d
bandiera għal kull dominju jew sottodominju li tixtieq tiġġenera ċertifikat kif issuġġerit fl-eżempju hawn taħt.
# cd /opt # ./letsencrypt-auto certonly --standalone -d your_domain.tld -d www.yourdomain.tld
6. Wara li jiġu installati serje ta 'pakketti u dipendenzi fuq il-magna tiegħek, Let's Encrypt iġibek biex tidħol fil-kont tiegħek li se jintuża għall-irkupru taċ-ċavetta mitlufa jew notifiki urġenti.
7. Sussegwentement għandek taqbel mat-termini tal-liċenzja billi tagħfas Enter key.
8. Fl-aħħarnett, jekk kollox mar kif suppost, se jintwera messaġġ ta 'informazzjoni ta' congratulation fuq it-terminal bash tiegħek. Il-messaġġ se juri wkoll meta ċ-ċertifikat jiskadi.
Pass 4: Installa Let's Encrypt SSL Certificate f'Nginx
9. Issa li għandek Ċertifikat SSL/TLS b'xejn, wasal iż-żmien li tinstallah fis-server tal-web Nginx sabiex id-dominju tiegħek jużah.
Iċ-ċertifikati SSL ġodda kollha jitqiegħdu f'/etc/letsencrypt/live/
taħt direttorju msemmi wara l-isem tad-dominju tiegħek. Uża l-kmand ls biex telenka l-fajls taċ-Ċertifikat maħruġa għad-dominju tiegħek u identifikahom.
# sudo ls /etc/letsencrypt/live/ # sudo ls -al /etc/letsencrypt/live/your_domain.tld
10. Biex tinstalla l-fajls taċ-ċertifikat f'Nginx u tippermetti SSL, iftaħ il-fajl /etc/nginx/nginx.conf
għall-editjar u żid id-dikjarazzjonijiet hawn taħt wara l-aħħar linja ta 'smigħ mill-blokk tas-server. Uża l-illustrazzjoni hawn taħt bħala gwida.
# vi /etc/nginx/nginx.conf
Silta blokk Nginx SSL:
# 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';
Ibdel is-sekwenza tal-isem tad-dominju għaċ-ċertifikati SSL biex taqbel mad-dominju tiegħek.
11. Fl-aħħarnett, ibda mill-ġdid is-servizz Nginx u żur id-dominju tiegħek permezz tal-Protokoll HTTPS fuq https://yourdomain
. Il-paġna għandha tagħbija bla xkiel, mingħajr ebda żball taċ-ċertifikat.
# systemctl restart nginx # service nginx restart
12. Sabiex tivverifika ċ-ċertifikat SSL/TLS u d-dritta tiegħu żur il-link li ġejja:
https://www.ssllabs.com/ssltest/analyze.html
13. F'każ li tirċievi notifika li s-server tiegħek jappoġġja skambju ta' ċavetta DH dgħajfa u klassifikazzjoni ġenerali ta' grad B, iġġenera ċifra Diffie-Hellman ġdida fid-direttorju /etc/nginx/ssl/ biex tipproteġi s-server tiegħek kontra l-attakk Logjam billi taħdem il-kmandi li ġejjin.
# mkdir /etc/nginx/ssl # cd /etc/nginx/ssl # openssl dhparam -out dhparams.pem 4096
F'dan l-eżempju użajna ċavetta 4096 bit, li fil-fatt tieħu ħafna żmien biex tiġġenera u tpoġġi overhead żejda fuq is-server tiegħek u fuq l-handshake SSL.
F'każ li ma jkunx hemm bżonn espliċitu li tuża ċavetta għal dan it-tul u m'intix paranojku, għandek tkun sigur b'ċavetta 2048 bit.
14. Wara li ċ-ċavetta DH tkun ġiet iġġenerata, iftaħ il-fajl ta 'konfigurazzjoni Nginx u żid id-dikjarazzjonijiet ta' hawn taħt wara l-linja ssl_ciphers
sabiex iżżid iċ-ċavetta DH u jgħolli l-livell tas-sigurtà tad-dominju tiegħek għal A+
grad.
# vi /etc/nginx/nginx.conf
Żid is-silta tal-blokk li ġejja għal 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. Ibda mill-ġdid is-servizz Nginx biex tapplika l-bidliet u terġa 'tittestja ċ-ċertifikat SSL tiegħek billi tneħħi l-cache tar-riżultat preċedenti mill-link imsemmi hawn fuq.
# systemctl restart nginx # service nginx restart
Pass 5: Tiġġedded Auto Nginx Ħieles Ejja Encrypt Ċertifikati SSL
16. Let's Encrypt CA tirrilaxxa ċertifikati SSL/TLS b'xejn validi għal 90 jum. Iċ-ċertifikati jistgħu jiġġeddu u jiġu applikati manwalment qabel l-iskadenza bl-użu tal-plugin webroot, mingħajr ma twaqqaf is-server tal-web tiegħek, billi toħroġ il-kmandi hawn taħt:
# ./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
Meta tħaddem il-kmand ta 'hawn fuq kun żgur li tissostitwixxi l-webroot-path
biex tqabbel l-għerq tad-dokument tas-server tal-web tiegħek, speċifikat mid-dikjarazzjoni tal-għeruq Nginx.
17. Sabiex iġġedded awtomatikament iċ-ċertifikat qabel ma jiskadi oħloq din l-iskrittura bash minn github erikaheidi fid-direttorju /usr/local/bin/ u żid il-kontenut ta’ hawn taħt (l-iskript huwa kemmxejn modifikat biex jirrifletti l-issettjar ta’ Nginx).
# vi /usr/local/bin/cert-renew
Żid il-linji li ġejjin fil-fajl cert-renew
.
#!/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. Ibdel il-varjabbli $webpath
mill-bidu ta 'l-iskrittura biex taqbel l-għerq tad-dokument Nginx tiegħek. Kun żgur li l-iscript huwa eżekutibbli u l-kalkulatur bc
huwa installat fis-sistema tiegħek billi toħroġ il-kmandi li ġejjin.
# chmod +x /usr/local/bin/cert-renew # yum install bc
Tista' tittestja l-iskript kontra d-dominju tiegħek billi toħroġ il-kmand li ġej:
# /usr/local/bin/cert-renew yourdomain.tld
19. Fl-aħħarnett, biex tmexxi l-proċess tat-tiġdid taċ-ċertifikat awtomatikament, żid xogħol cron ġdid biex tesegwixxi l-iskrittura kull ġimgħa sabiex taġġorna ċ-ċertifikat fi żmien 30 jum qabel id-data ta 'skadenza.
# crontab -e
Żid il-linja li ġejja fil-qiegħ tal-fajl.
@weekly /usr/local/bin/cert-renew your_domain.tld >> /var/log/your_domain.tld-renew.log 2>&1
Dak kollox! Issa s-server Nginx jista 'jwassal kontenut tal-web sigur b'ċertifikat SSL/TLS Ejja Encrypt b'xejn fuq il-websajt tiegħek.