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:

  1. Isem ta' dominju reġistrat b'rekords validi A biex jindikaw lura lejn l-Indirizz IP pubbliku tas-server tiegħek.
  2. 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.