RHEL/CentOS 7/6-da Apache-ni ygtybarly üpjün etmek üçin SSL şahadatnamasyny nädip gurmaly


SSL/TLS mugt şahadatnamalary barada iň soňky şifrlemek gollanmasyny giňeltmek, bu makalada CentOS/RHEL 7/6 we Fedora-da Apache web serweri üçin şifrlemek şahadatnamasy edarasy tarapyndan berlen mugt SSL/TLS şahadatnamalaryny nädip almalydygyny we gurmalydygyny görkezeris. paýlamalar hem.

Debian we Ubuntu-da Apache for Encrypt gurmak isleýän bolsaňyz, aşakdaky gollanmany ýerine ýetiriň:

  1. Serweriňiziň umumy IP adresini görkezmek üçin dogry A ýazgylary bilen hasaba alnan domen ady.
  2. SSL moduly bilen gurlan Apache serweri açyk we birnäçe domen ýa-da kiçi domen ýerleşdiren ýagdaýyňyzda Wirtual Hosting açyk.

1-nji ädim: Apache web serwerini guruň

1. Öň gurulmadyk bolsa, aşakdaky buýrugy bermek bilen httpd daemon gurup bolýar:

# yum install httpd

2. Geliň, şifrlenen programma üpjünçiliginiň Apache bilen işlemegi üçin SSL/TLS modulynyň aşakdaky buýrugy bermek arkaly gurnalandygyna göz ýetiriň:

# yum -y install mod_ssl

3. Ahyrynda, Apache serwerini aşakdaky buýruk bilen başlaň:

# systemctl start httpd.service          [On RHEL/CentOS 7]
# service httpd start                    [On RHEL/CentOS 6]

2-nji ädim: Geliň, şifrlenen SSL şahadatnamasyny guruň

4. “Let Encrypt” müşderisini gurmagyň iň ýönekeý usuly, faýl ulgamyňyzdaky github ammaryny klonlamakdyr. Ulgamyňyza git gurmak üçin aşakdaky buýruk bilen Epel ammarlaryny işletmeli.

# yum install epel-release

5. Epel repos ulgamyňyza goşulandan soň, aşakdaky buýrugy işledip git müşderisini guruň:

# yum install git

6. Indi, “Encrypt” bilen iş salyşmak üçin zerur bolan ähli garaşlylyklary guranyňyzdan soň, /usr/local/ katalogyna giriň we aşakdakylar bilen resmi github ammaryny emele getiriň. buýruk:

# cd /usr/local/
# git clone https://github.com/letsencrypt/letsencrypt

3-nji ädim: Apache üçin mugt şifrlemek SSL şahadatnamasyny alyň

7. Apache üçin mugt şifrlemek şahadatnamasyny almak prosesi, apache plugininiň kömegi bilen CentOS/RHEL üçin awtomatlaşdyryldy.

SSL şahadatnamasyny almak üçin geliň şifrlemek skript buýrugyny işledeliň. /usr/local/letsencrypt -dan gurnama katalogyny şifrläliň we --apache opsiýasyny we --apache opsiýasyny we letencrypt-auto buýrugyny işlediň. kody> -d baýdak, her kiçi domen üçin şahadatnama gerek.

# cd /usr/local/letsencrypt
# ./letsencrypt-auto --apache -d your_domain.tld 

8. Lostitirilen açaryňyzy ýa-da gyssagly duýduryşlar üçin “Let Encrypt” tarapyndan ulanyljak e-poçta salgysyny beriň we dowam etmek üçin Enter basyň.

9. Enter düwmesine basyp, ygtyýarnamanyň şertleri bilen ylalaşyň.

10. CentOS/RHEL-de, tertip boýunça, Apache serweri, Debian esasly paýlanyşy ýaly elýeterli (hereketsiz) öý eýelerinden kataloglary bölmek düşünjesini ulanmaýar.

Şeýle hem, wirtual hosting deslapky ýagdaýda ýapylýar. Serweriň (ServerName) adyny kesgitleýän Apache beýany, SSL konfigurasiýa faýlynda ýok.

Bu görkezmäni işjeňleşdirmek üçin, Geliň şifrlemek, wirtual öý eýesini saýlamagyňyzy haýyş eder. Elýeterli Vhost tapmaýandygy sebäpli, Let Encrypt müşderisi tarapyndan awtomatiki üýtgediljek ssl.conf faýly saýlaň we dowam etmek üçin Enter basyň.

11. Ondan soň, HTTP haýyşlary üçin aňsat usuly saýlaň we öňe gitmek üçin Enter basyň.

12. Netijede, hemme zat oňat geçen bolsa, ekranda gutlag habary görkezilmelidir. Sorag goýbermek üçin Enter basyň.

Bu! Domeniňiz üçin SSL/TLS şahadatnamasyny üstünlikli berdiňiz. Indi HTTPS protokolyny ulanyp web sahypaňyza göz aýlap bilersiňiz.

4-nji ädim: Domende şifrlemegi mugt synap göreliň

13. SSL/TLS domeniňiziň dogrulygyny barlamak üçin aşakdaky baglanyşyga giriň we domeniňizde şahadatnamany barlaň.

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

14. Geçirilen synaglarda domeniňiziň gowşaklygy barada birnäçe hasabat alsaňyz, şol howpsuzlyk deşiklerini gyssagly düzeltmeli.

C synpyň umumy reýtingi domeniňizi gaty ygtybarly edýär. Bu howpsuzlyk meselelerini çözmek üçin Apache SSL konfigurasiýa faýlyny açyň we aşakdaky üýtgeşmeleri giriziň:

# vi /etc/httpd/conf.d/ssl.conf

SSLProtocol jümlesi bilen setir gözläň we setiriň soňuna -SSLv3 goşuň.

Faýlyň içine has çuňňur giriň, SSLCipherSuite setirini gözläň we düşündiriş beriň, onuň öňünde # goýuň we şu setiriň aşagyndaky mazmuny goşuň:

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. aboveokardaky üýtgeşmeleriň hemmesini edeniňizden soň, faýly ýazdyryň we ýapyň, soňra üýtgeşmeler girizmek üçin Apache daemonyny täzeden açyň.

# systemctl restart httpd.service          [On RHEL/CentOS 7]
# service httpd restart                    [On RHEL/CentOS 6]

16. Indi, ýokardaky ýaly baglanyşyga girip, domen şifrlemegiň ýagdaýyny täzeden barlaň. Retestleri ýerine ýetirmek üçin web sahypasyndan keş keşini arassalaň.

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

Indi umumy baha bermeli, bu siziň domeniňiziň ýokary derejede ygtybarlydygyny aňladýar.

4-nji ädim: Apache-de şahadatnamalary şifrläliň

17. “Let Encrypt” programma üpjünçiliginiň bu beta wersiýasy 90 günden soň möhleti gutarýan şahadatnamalary çykarýar. Şeýlelik bilen, SSL şahadatnamasyny täzelemek üçin, başlangyç şahadatnamany almak üçin ulanylýan şol bir wariantlar we baýdaklar bilen letencrypt-auto buýrugyny gutarýança gaýtadan ýerine ýetirmeli.

Şahadatnamany el bilen nädip täzelemelidigi barada mysal aşakda getirilýär.

# cd /usr/local/letsencrypt
# ./letsencrypt-auto certonly --apache --renew-by-default  -d your_domain.tld

18. Bu prosesi awtomatlaşdyrmak üçin, aşakdaky mazmunly /usr/local/bin/ katalogynda github erikaheidi tarapyndan üpjün edilen aşakdaky baş skriptini dörediň. (skript, “letencrypt” gurnama katalogymyzy görkezmek üçin birneme üýtgedildi).

# vi /usr/local/bin/le-renew-centos

Aşakdaky mazmuny le-renew-centos faýlyna goşuň:

!/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. scriptazgy üçin ýerine ýetiriş rugsatlaryny beriň, bc paketini guruň we synamak üçin skripti işlediň. Domen adyňyzy skript üçin pozisiýa parametri hökmünde ulanyň. Bu ädimi ýerine ýetirmek üçin aşakdaky buýruklary beriň:

# yum install bc
# chmod +x /usr/local/bin/le-renew-centos
# /usr/local/bin/le-renew-centos your_domain.tld

20. Netijede, Linux meýilnamasyny ulanyp, skriptiňizi iki aýdan bir gezek işletmek üçin şahadatnamaňyzyň möhleti gutarmanka täzelenjekdigine göz ýetiriň.

# crontab -e

Faýlyň aşagyna aşakdaky setiri goşuň.

0 1 1 */2 * /usr/local/bin/le-renew-centos your_domain.tld >> /var/log/your_domain.tld-renew.log 2>&1

Bu! CentOS/RHEL ulgamynyň üstünde işleýän Apache serweriňiz, mugt Let Encrypt SSL şahadatnamasyny ulanyp SSL mazmunyna hyzmat edýär.