Kif Tinstalla Ċertifikat SSL Lets Encrypt biex Tassigura Apache fuq RHEL/CentOS 7/6
L-estensjoni tal-aħħar tutorja Let's Encrypt dwar iċ-ċertifikati SSL/TLS b'xejn, f'dan l-artikolu ser nuru kif niksbu u ninstallaw ċertifikati SSL/TLS b'xejn maħruġa minn Let's Encrypt Certificate Authority għas-server tal-web Apache fuq CentOS/RHEL 7/6 u Fedora distribuzzjonijiet ukoll.
Jekk qed tfittex li tinstalla Let's Encrypt for Apache fuq Debian u Ubuntu, segwi din il-gwida hawn taħt:
- Isem ta' dominju reġistrat b'rekords validi
A
biex jindikaw lura lejn l-Indirizz IP pubbliku tas-server tiegħek. - Server Apache installat b'modulu SSL attivat u Hosting Virtwali attivat f'każ li qed tospita oqsma jew sottodominji multipli.
Pass 1: Installa Apache Web Server
1. Jekk mhux diġà installat, httpd daemon jista 'jiġi installat billi joħroġ il-kmand hawn taħt:
# yum install httpd
2. Sabiex is-software Ejja kriptaġġ jaħdem ma 'Apache, aċċerta li l-modulu SSL/TLS huwa installat billi toħroġ il-kmand hawn taħt:
# yum -y install mod_ssl
3. Fl-aħħarnett, ibda s-server Apache bil-kmand li ġej:
# systemctl start httpd.service [On RHEL/CentOS 7] # service httpd start [On RHEL/CentOS 6]
Pass 2: Installa Let's Encrypt SSL Certificate
4. L-aktar metodu sempliċi ta 'installazzjoni tal-klijent Let's Encrypt huwa billi tikklona r-repożitorju ta' github fis-sistema tal-fajls tiegħek. Biex tinstalla git fis-sistema tiegħek trid tattiva r-repożitorji Epel bil-kmand li ġej.
# yum install epel-release
5. Ladarba Epel repos jiġu miżjuda fis-sistema tiegħek, kompli u installa git client billi tħaddem il-kmand hawn taħt:
# yum install git
6. Issa, ladarba tkun stallajt id-dipendenzi kollha meħtieġa sabiex tittratta Let's Encrypt, mur fid-direttorju /usr/local/
u ibda tiġbed il-klijent Let's Encrypt mill-repożitorju uffiċjali tal-github tiegħu b'dan li ġej kmand:
# cd /usr/local/ # git clone https://github.com/letsencrypt/letsencrypt
Pass 3: Ikseb Ċertifikat SSL Ejja Encrypt b'xejn għal Apache
7. Il-proċess tal-kisba ta 'Ċertifikat Let's Encrypt b'xejn għal Apache huwa awtomatizzat għal CentOS/RHEL grazzi għall-plugin apache.
Ejja nħaddmu l-kmand tal-iskript Let's Encrypt sabiex niksbu Ċertifikat SSL. Mur fid-direttorju tal-installazzjoni Let's Encrypt minn /usr/local/letsencrypt
u mexxi l-kmand letsencrypt-auto
billi tipprovdi l-għażla --apache
u l--d
bandiera għal kull sottodominju li għandek bżonn ċertifikat.
# cd /usr/local/letsencrypt # ./letsencrypt-auto --apache -d your_domain.tld
8. Ipprovdi l-indirizz tal-email li se jintuża minn Let's Encrypt biex tirkupra ċ-ċavetta mitlufa tiegħek jew għal avviżi urġenti u agħfas Enter biex tkompli.
9. Aqbel mat-termini tal-liċenzja billi tolqot Enter key.
10. Fuq CentOS/RHEL, b'mod awtomatiku, is-server Apache ma jużax il-kunċett tas-separazzjoni tad-direttorji għal hosts attivati minn hosts disponibbli (inattivi) kif tagħmel id-distribuzzjoni bbażata fuq Debian.
Ukoll, l-hosting virtwali huwa diżattivat awtomatikament. Id-dikjarazzjoni Apache li tispeċifika l-isem tas-server (ServerName) mhix preżenti fuq il-fajl tal-konfigurazzjoni SSL.
Biex tattiva din id-direttiva, Let's Encrypt se nitolbok tagħżel host virtwali. Minħabba li ma ssib l-ebda Vhost disponibbli, agħżel il-fajl ssl.conf
biex jiġi modifikat awtomatikament mill-klijent Let's Encrypt u agħfas Enter biex tkompli.
11. Sussegwentement, agħżel il-metodu Easy għal talbiet HTTP u agħfas Enter biex timxi 'l quddiem.
12. Fl-aħħarnett, jekk kollox mexa bla xkiel, għandu jintwera messaġġ ta 'kongratulazzjoni fuq l-iskrin. Agħfas Enter biex tirrilaxxa l-pront.
Dak hu! Int ħarġet b'suċċess ċertifikat SSL/TLS għad-dominju tiegħek. Issa tista 'tibda tfittex il-websajt tiegħek billi tuża protokoll HTTPS.
Pass 4: Ittestja Ħieles Ejja Encryption Encryption fuq Dominju
13. Sabiex tittestja l-dritta tad-dominju tiegħek SSL/TLS handshake żur il-link hawn taħt u ttestja ċ-ċertifikat tiegħek fuq id-dominju tiegħek.
https://www.ssllabs.com/ssltest/analyze.html
14. Jekk tirċievi serje ta 'rapporti dwar il-vulnerabbiltà tad-dominju tiegħek fit-testijiet imwettqa, allura għandek bżonn tirranġa dawk it-toqob tas-sigurtà b'mod urġenti.
Klassifikazzjoni ġenerali tal-klassi C tagħmel id-dominju tiegħek mhux sigur ħafna. Biex issolvi dawn il-problemi tas-sigurtà, iftaħ il-fajl tal-konfigurazzjoni Apache SSL u agħmel il-bidliet li ġejjin:
# vi /etc/httpd/conf.d/ssl.conf
Fittex linja bi dikjarazzjoni SSLProtocol
u żid -SSLv3
fl-aħħar tal-linja.
Mur fil-fond fil-fajl, fittex u kkummenta l-linja b'SSLCipherSuite
billi tpoġġi #
quddiemha u żid il-kontenut li ġej taħt din il-linja:
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA SSLHonorCipherOrder on SSLOptions +StrictRequire
15. Wara li tkun għamilt il-bidliet kollha ta 'hawn fuq, issalva u agħlaq il-fajl, imbagħad terġa' tibda Apache daemon biex tapplika l-bidliet.
# systemctl restart httpd.service [On RHEL/CentOS 7] # service httpd restart [On RHEL/CentOS 6]
16. Issa, terġa 'tittestja l-istatus tal-kriptaġġ tad-dominju tiegħek, billi żżur l-istess link bħal hawn fuq. Biex twettaq testijiet mill-ġdid agħfas il-link Clear cache mill-websajt.
https://www.ssllabs.com/ssltest/analyze.html
Issa għandek tikseb klassifikazzjoni ġenerali tal-klassi A, li jfisser li d-dominju tiegħek huwa sigur ħafna.
Pass 4: Ġedded Awtomatiku Ejja Encrypt Ċertifikati fuq Apache
17. Din il-verżjoni beta tas-softwer Let's Encrypt tirrilaxxa ċertifikati b'data ta 'skadenza wara 90 jum. Għalhekk, sabiex iġġedded iċ-ċertifikat SSL, trid tesegwixxi l-kmand letsencrypt-auto
mill-ġdid qabel id-data ta 'skadenza, bl-istess għażliet u bnadar użati biex tikseb iċ-ċertifikat inizjali.
Eżempju dwar kif iġġedded manwalment iċ-ċertifikat huwa ppreżentat hawn taħt.
# cd /usr/local/letsencrypt # ./letsencrypt-auto certonly --apache --renew-by-default -d your_domain.tld
18. Biex awtomat dan il-proċess, oħloq l-iskript bash li ġej ipprovdut minn github erikaheidi, fid-direttorju /usr/local/bin/
bil-kontenut li ġej. (l-iskrittura hija kemmxejn modifikata biex tirrifletti d-direttorju tal-installazzjoni tal-letsencrypt tagħna).
# vi /usr/local/bin/le-renew-centos
Żid il-kontenut li ġej fil-fajl le-renew-centos
:
!/bin/bash domain=$1 le_path='/usr/local/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 --apache --renew-by-default --domains "${domain_list}" echo "Restarting Apache..." /usr/bin/systemctl restart httpd echo "Renewal process finished for domain $domain" exit 0; fi
19. Agħti permessi ta' eżekuzzjoni għall-iskript, installa bc package u mexxi l-iskript sabiex tittestjah. Uża l-isem tad-dominju tiegħek bħala parametru pożizzjonali għall-iskrittura. Agħti l-kmandi hawn taħt biex twettaq dan il-pass:
# yum install bc # chmod +x /usr/local/bin/le-renew-centos # /usr/local/bin/le-renew-centos your_domain.tld
20. Fl-aħħarnett, billi tuża l-iskedar tal-Linux, żid xogħol cron ġdid sabiex tmexxi l-iskrittura kull xahrejn, u tiżgura li ċ-ċertifikat tiegħek jiġi aġġornat qabel id-data ta 'skadenza.
# crontab -e
Żid il-linja li ġejja fil-qiegħ tal-fajl.
0 1 1 */2 * /usr/local/bin/le-renew-centos your_domain.tld >> /var/log/your_domain.tld-renew.log 2>&1
Dak hu! Is-server Apache tiegħek li jaħdem fuq is-sistema CentOS/RHEL issa qed iservi kontenut SSL billi juża ċertifikat SSL Let's Encrypt b'xejn.