Kā instalēt ļauj šifrēt SSL sertifikātu, lai aizsargātu Apache RHEL/CentOS 7/6


Pagarinot pēdējo šifrēšanas apmācību par SSL/TLS bezmaksas sertifikātiem, šajā rakstā mēs parādīsim, kā iegūt un instalēt bezmaksas SSL/TLS sertifikātus, ko izdevuši Let's Encrypt Certificate Authority Apache tīmekļa serverim CentOS/RHEL 7/6 un Fedora sadalījumi arī.

Ja vēlaties instalēt Let’s Encrypt for Apache Debian un Ubuntu, rīkojieties šādi:

  1. Reģistrēts domēna vārds ar derīgu A ierakstu, lai norādītu atpakaļ uz jūsu servera publisko IP adresi.
  2. Apache serveris, kas instalēts ar iespējotu SSL moduli un virtuālo mitināšanu, ja mitināt vairākus domēnus vai apakšdomēnus.

1. darbība: instalējiet Apache tīmekļa serveri

1. Ja vēl nav instalēts, httpd dēmonu var instalēt, izsniedzot šādu komandu:

# yum install httpd

2. Lai Ļaujiet šifrēt programmatūru darbam ar Apache, pārliecinieties, ka SSL/TLS modulis ir instalēts, izsniedzot tālāk norādīto komandu:

# yum -y install mod_ssl

3. Visbeidzot, palaidiet Apache serveri ar šādu komandu:

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

2. darbība: instalējiet Let’s Encrypt SSL Certificate

4. Vienkāršākā Let’s Encrypt klienta instalēšanas metode ir klonējot faila sistēmā github repozitoriju. Lai instalētu git savā sistēmā, jums jāiespējo Epel krātuves ar šādu komandu.

# yum install epel-release

5. Kad jūsu sistēmā ir pievienotas Epel repos, turpiniet instalēt git klientu, izpildot zemāk esošo komandu:

# yum install git

6. Tagad, kad esat instalējis visas nepieciešamās atkarības, lai tiktu galā ar Let's Encrypt, dodieties uz direktoriju /usr/local/ un sāciet vilkt klienta Let's Encrypt veidlapu no tā oficiālās github repozitorija ar sekojošo: komanda:

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

3. darbība. Iegūstiet Apache šifrēšanas bezmaksas SSL sertifikātu

7. Pateicoties Apache spraudnim, bezmaksas Let’s Encrypt Certificate for Apache iegūšanas process tiek automatizēts CentOS/RHEL.

Lai iegūtu SSL sertifikātu, palaidīsim komandu Encrypt script. Dodieties uz Encrypt instalācijas direktoriju no /usr/local/letsencrypt un palaidiet komandu letsencrypt-auto , sniedzot opciju --apache un < kods> -d karodziņš katram apakšdomēnam, kuram nepieciešams sertifikāts.

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

8. Norādiet e-pasta adresi, kuru Let’s Encrypt izmantos, lai atgūtu pazaudēto atslēgu vai saņemtu steidzamus paziņojumus, un nospiediet Enter, lai turpinātu.

9. Vienojieties par licences noteikumiem, nospiežot taustiņu Enter.

10. CentOS/RHEL pēc noklusējuma Apache serveris neizmanto koncepciju par direktoriju atdalīšanu iespējotajiem saimniekiem no pieejamajiem (neaktīvajiem) resursdatoriem, kā to dara Debian balstīta izplatīšana.

Arī virtuālā mitināšana pēc noklusējuma ir atspējota. Apache paziņojums, kas norāda servera nosaukumu (ServerName), kura nav SSL konfigurācijas failā.

Lai aktivizētu šo direktīvu, Let’s Encrypt aicinās jūs izvēlēties virtuālo resursdatoru. Tā kā tajā netiek atrasts neviens Vhost, atlasiet failu ssl.conf , kuru automātiski modificēsim Let’s Encrypt klients, un nospiediet Enter, lai turpinātu.

11. Pēc tam izvēlieties vienkāršo metodi HTTP pieprasījumiem un nospiediet Enter, lai virzītos uz priekšu.

12. Visbeidzot, ja viss noritēja gludi, ekrānā jāparāda apsveikuma ziņojums. Nospiediet Enter, lai atbrīvotu uzvedni.

Tieši tā! Jūs esat veiksmīgi izsniedzis SSL/TLS sertifikātu savam domēnam. Tagad jūs varat sākt pārlūkot vietni, izmantojot HTTPS protokolu.

4. darbība. Pārbaudiet bezmaksas šifrēšanas šifrēšanu domēnā

13. Lai pārbaudītu sava domēna SSL/TLS rokasspiediena taisnīgumu, apmeklējiet šo saiti un pārbaudiet sertifikātu savā domēnā.

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

14. Ja veikto testu laikā jūs saņemat virkni ziņojumu par sava domēna ievainojamību, jums šīs drošības nepilnības ir steidzami jānovērš.

C klases kopējais vērtējums padara jūsu domēnu ļoti nedrošu. Lai novērstu šīs drošības problēmas, atveriet Apache SSL konfigurācijas failu un veiciet šādas izmaiņas:

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

Meklējiet līniju ar SSLProtocol paziņojumu un rindas beigās pievienojiet -SSLv3 .

Pārejiet dziļāk failā, meklējiet un komentējiet rindiņu ar SSLCipherSuite , ievietojot # tā priekšā un zem šīs rindas pievienojiet šādu saturu:

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. Kad esat veicis visas iepriekš minētās izmaiņas, saglabājiet un aizveriet failu, pēc tam restartējiet Apache dēmonu, lai lietotu izmaiņas.

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

16. Tagad vēlreiz pārbaudiet sava domēna šifrēšanas statusu, apmeklējot to pašu saiti kā iepriekš. Lai veiktu atkārtotus testus, vietnē noklikšķiniet uz saites Notīrīt kešatmiņu.

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

Tagad jums vajadzētu iegūt A klases kopējo vērtējumu, kas nozīmē, ka jūsu domēns ir ļoti aizsargāts.

4. darbība: automātiskā atjaunošana, šifrēsim sertifikātus Apache

17. Šī programmatūras Let’s Encrypt beta versija izlaiž sertifikātus ar derīguma termiņu pēc 90 dienām. Tātad, lai atjaunotu SSL sertifikātu, pirms termiņa beigām vēlreiz jāizpilda komanda letsencrypt-auto ar tām pašām opcijām un karodziņiem, kas tiek izmantoti sākotnējā sertifikāta iegūšanai.

Tālāk ir sniegts piemērs, kā manuāli atjaunot sertifikātu.

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

18. Lai automatizētu šo procesu, direktorijā /usr/local/bin/ izveidojiet šādu bash skriptu, ko nodrošina github erikaheidi ar šādu saturu. (skripts ir nedaudz modificēts, lai atspoguļotu mūsu letencrypt instalēšanas direktoriju).

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

Pievienojiet šādu saturu failam le-atjaunot-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. Piešķiriet skripta izpildes atļaujas, instalējiet paketi bc un palaidiet skriptu, lai to pārbaudītu. Izmantojiet sava domēna nosaukumu kā skripta pozicionālo parametru. Lai izpildītu šo darbību, izsniedziet tālāk norādītās komandas:

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

20. Visbeidzot, izmantojot Linux plānošanu, pievienojiet jaunu cron darbu, lai skriptu palaistu ik pēc diviem mēnešiem, nodrošinot, ka jūsu sertifikāts tiks atjaunināts pirms derīguma termiņa beigām.

# crontab -e

Pievienojiet šādu rindiņu faila apakšdaļā.

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

Tieši tā! Jūsu Apache serveris, kas darbojas CentOS/RHEL sistēmas augšpusē, tagad apkalpo SSL saturu, izmantojot bezmaksas Let’s Encrypt SSL sertifikātu.