Kuinka asentaa salataan SSL-varmenne Apachen suojaamiseksi RHEL/CentOS 7/6: lla


Laajentamalla viimeistä Let's Encrypt -opetusohjelmaa, joka koskee SSL/TLS-ilmaisia varmenteita, tässä artikkelissa aiomme osoittaa, kuinka hankitaan ja asennetaan Let's Encrypt Certificate Authority for Apache -verkkopalvelimen myöntämät SSL/TLS-varmenteet CentOS/RHEL 7/6: een ja Fedoraan myös jakaumat.

Jos haluat asentaa Let’s Encrypt for Apache -palvelun Debianiin ja Ubuntuun, noudata seuraavaa ohjetta:

  1. Rekisteröity verkkotunnus, jolla on kelvollinen A -rekisteri, viittaa takaisin palvelimesi julkiseen IP-osoitteeseen.
  2. Apache-palvelin, johon on asennettu SSL-moduuli ja virtuaalipalvelin, jos isännöit useita verkkotunnuksia tai aliverkkotunnuksia.

Vaihe 1: Asenna Apache-verkkopalvelin

1. Jos sitä ei ole vielä asennettu, httpd-daemon voidaan asentaa antamalla seuraava komento:

# yum install httpd

2. Jotta Let-salausohjelmisto toimisi Apachen kanssa, varmista, että SSL/TLS-moduuli on asennettu antamalla seuraava komento:

# yum -y install mod_ssl

3. Käynnistä lopuksi Apache-palvelin seuraavalla komennolla:

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

Vaihe 2: Asenna Let’s Encrypt SSL Certificate

4. Yksinkertaisin tapa asentaa Let’s Encrypt -asiakasohjelma on kloonata github-arkisto tiedostojärjestelmään. Asentaaksesi git -järjestelmän järjestelmään sinun on otettava Epel-arkistot käyttöön seuraavalla komennolla.

# yum install epel-release

5. Kun Epel-repot on lisätty järjestelmään, siirry eteenpäin ja asenna git-asiakas suorittamalla alla oleva komento:

# yum install git

6. Kun olet asentanut kaikki tarvittavat riippuvuudet Let's Encrypt -toiminnon käsittelemiseksi, siirry hakemistoon /usr/local/ ja ala vetää Let's Encrypt -asiakasta sen virallisesta github-arkistosta seuraavasti: komento:

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

Vaihe 3: Hanki ilmainen Let’s Encrypt SSL -sertifikaatti Apachelle

7. Ilmaisen Let’s Encrypt Certificate for Apache -prosessin hankintaprosessi on automatisoitu CentOS/RHEL: lle apache-laajennuksen ansiosta.

Suoritetaan Let’s Encrypt script -komento SSL-varmenteen hankkimiseksi. Siirry kohtaan Salaa asennushakemisto kohdasta /usr/local/letsencrypt ja suorita komento letsencrypt-auto antamalla --apache -vaihtoehto ja -d -merkki jokaiselle aliverkkotunnukselle, johon tarvitset varmenteen.

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

8. Anna sähköpostiosoite, jota Let’s Encrypt käyttää kadonneen avaimen palauttamiseen tai kiireellisiin ilmoituksiin ja jatka painamalla Enter.

9. Hyväksy käyttöoikeuden ehdot painamalla Enter-näppäintä.

10. CentOS/RHEL: ssä Apache-palvelin ei oletusarvoisesti erota käytössä olevien isäntien hakemistoista käytettävissä olevia (ei-aktiivisia) isäntiä, kuten Debian-pohjainen jakelu tekee.

Myös virtuaalinen isännöinti on oletusarvoisesti pois käytöstä. Apache-käsky, joka määrittää palvelimen nimen (ServerName), jota ei ole SSL-määritystiedostossa.

Tämän direktiivin aktivoimiseksi Let’s Encrypt kehottaa sinua valitsemaan virtuaalisen isännän. Koska se ei löydä Vhostia saatavana, valitse Let’s Encrypt -työasemaohjelman automaattisesti muokattava tiedosto ssl.conf ja paina Enter jatkaaksesi.

11. Valitse seuraavaksi helppo menetelmä HTTP-pyyntöjä varten ja paina Enter siirtyäksesi eteenpäin.

12. Lopuksi, jos kaikki meni sujuvasti, näytöllä pitäisi olla onnitteluviesti. Vapauta kehote painamalla Enter-näppäintä.

Se siitä! Olet myöntänyt SSL/TLS-varmenteen verkkotunnuksellesi. Nyt voit alkaa selata verkkosivustoasi HTTPS-protokollan avulla.

Vaihe 4: Testaa ilmainen salauksen salaus verkkotunnuksessa

13. Voit testata verkkotunnuksesi SSL/TLS-kättelyn suoruutta käymällä alla olevassa linkissä ja testaamalla varmenteesi verkkotunnuksessasi.

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

14. Jos saat useita raportteja verkkotunnuksesi haavoittuvuudesta suoritetuissa testeissä, sinun on korjattava nämä tietoturva-aukot kiireellisesti.

C-luokan kokonaisluokitus tekee verkkotunnuksestasi erittäin epävarman. Voit korjata nämä turvallisuusongelmat avaamalla Apache SSL -määritystiedoston ja tekemällä seuraavat muutokset:

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

Etsi riviä SSLProtocol -lausekkeella ja lisää rivin loppuun -SSLv3 .

Mene syvemmälle tiedostoon, etsi ja kommentoi rivi SSLCipherSuite -toiminnolla asettamalla # sen eteen ja lisäämällä seuraava sisältö tämän rivin alle:

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. Kun olet tehnyt kaikki yllä olevat muutokset, tallenna ja sulje tiedosto ja käynnistä sitten Apache-demoni uudelleen muutosten tekemistä varten.

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

16. Testaa nyt verkkotunnuksesi salauksen tila uudelleen käymällä samassa linkissä kuin yllä. Suorita uusintatestit napsauttamalla Tyhjennä välimuisti -linkkiä verkkosivustolta.

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

Nyt sinun pitäisi saada luokan A yleisarvosana, mikä tarkoittaa, että verkkotunnuksesi on erittäin suojattu.

Vaihe 4: Uudista Let's Encrypt Certificates on Apache

17. Tämä Let’s Encrypt -ohjelmiston beetaversio julkaisee varmenteet, joiden viimeinen voimassaolopäivä on 90 päivää. Joten SSL-varmenteen uusimiseksi sinun on suoritettava letsencrypt-auto -komento uudelleen ennen viimeistä käyttöpäivää samoilla vaihtoehdoilla ja lipuilla, joita käytetään alkuperäisen varmenteen hankkimiseen.

Alla on esimerkki varmenteen manuaalisesta uusimisesta.

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

18. Voit automatisoida tämän prosessin luomalla seuraavan bash-komentosarjan, jonka tarjoaa github erikaheidi hakemistoon /usr/local/bin/ ja jonka sisältö on seuraava. (komentosarjaa on hieman muokattu vastaamaan letencrypt-asennushakemistoa).

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

Lisää seuraava sisältö le-atjaun-centos -tiedostoon:

!/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. Myönnä komentosarjan suoritusoikeudet, asenna bc-paketti ja suorita komentosarja sen testaamiseksi. Käytä toimialueesi nimeä komentosarjan sijaintiparametrina. Suorita tämä vaihe antamalla seuraavat komennot:

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

20. Lisää lopuksi Linux-ajoituksen avulla uusi cron-työ, jotta komentosarja voidaan suorittaa kahden kuukauden välein varmistaen, että varmenne päivitetään ennen viimeistä käyttöpäivää.

# crontab -e

Lisää seuraava rivi tiedoston alaosaan.

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

Se siitä! CentOS/RHEL-järjestelmän päällä toimiva Apache-palvelimesi palvelee nyt SSL-sisältöä ilmaisella Let’s Encrypt SSL -sertifikaatilla.