Hvernig á að setja upp Lets dulkóða SSL vottorð til að tryggja Apache á RHEL/CentOS 7/6


Með því að framlengja síðustu Let's Encrypt kennsluefnið varðandi SSL/TLS ókeypis vottorð, í þessari grein ætlum við að sýna hvernig á að fá og setja upp ókeypis SSL/TLS vottorð gefin út af Let's Encrypt Certificate Authority fyrir Apache vefþjón á CentOS/RHEL 7/6 og Fedora dreifingar líka.

Ef þú ert að leita að því að setja upp Let's Encrypt for Apache á Debian og Ubuntu, fylgdu þessari handbók hér að neðan:

  1. Skráð lén með gildum A skrám til að vísa til baka á opinbera IP tölu netþjónsins þíns.
  2. Apache þjónn settur upp með SSL einingu virka og sýndarhýsing virkt ef þú ert að hýsa mörg lén eða undirlén.

Skref 1: Settu upp Apache vefþjón

1. Ef það er ekki þegar uppsett er httpd púkinn hægt að setja upp með því að gefa út skipunina hér að neðan:

# yum install httpd

2. Til þess að Let's dulkóða hugbúnaðinn virki með Apache, tryggðu að SSL/TLS einingin sé sett upp með því að gefa út skipunina hér að neðan:

# yum -y install mod_ssl

3. Að lokum skaltu ræsa Apache netþjón með eftirfarandi skipun:

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

Skref 2: Settu upp Let's Encrypt SSL Certificate

4. Einfaldasta aðferðin til að setja upp Let's Encrypt viðskiptavin er með því að klóna github geymslu í skráarkerfinu þínu. Til að setja upp git á kerfið þitt verður þú að virkja Epel geymslur með eftirfarandi skipun.

# yum install epel-release

5. Þegar Epel repos hefur verið bætt við í kerfinu þínu skaltu halda áfram og setja upp git biðlara með því að keyra skipunina hér að neðan:

# yum install git

6. Nú, þegar þú hefur sett upp allar nauðsynlegar ósjálfstæðir til að takast á við Let's Encrypt, farðu í /usr/local/ möppuna og byrjaðu að draga Let's Encrypt biðlarann úr opinberu github geymslunni hans með eftirfarandi skipun:

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

Skref 3: Fáðu ókeypis Let's Encrypt SSL vottorð fyrir Apache

7. Ferlið við að fá ókeypis Let's Encrypt Certificate fyrir Apache er sjálfvirkt fyrir CentOS/RHEL þökk sé apache viðbótinni.

Við skulum keyra Let's Encrypt script skipunina til að fá SSL vottorð. Farðu í Let's Encrypt uppsetningarskrá frá /usr/local/letsencrypt og keyrðu letsencrypt-auto skipunina með því að gefa upp --apache valkostinn og -d fána fyrir hvert undirlén sem þú þarft vottorð.

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

8. Gefðu upp netfangið sem Let's Encrypt mun nota til að endurheimta týnda lykilinn þinn eða fyrir brýnar tilkynningar og ýttu á Enter til að halda áfram.

9. Samþykktu skilmála leyfisins með því að ýta á Enter takkann.

10. Á CentOS/RHEL, sjálfgefið, notar Apache þjónninn ekki hugmyndina um að aðgreina möppur fyrir virkjaða gestgjafa frá tiltækum (óvirkum) gestgjöfum eins og Debian byggð dreifing gerir.

Einnig er sýndarhýsing sjálfgefið óvirk. Apache yfirlýsingin sem tilgreinir nafn þjónsins (ServerName) hún er ekki til staðar á SSL stillingarskrá.

Til að virkja þessa tilskipun mun Let's Encrypt biðja þig um að velja sýndargestgjafa. Vegna þess að það finnur engan Vhost tiltækan skaltu velja ssl.conf skrána til að breyta sjálfkrafa af Let's Encrypt biðlara og ýta á Enter til að halda áfram.

11. Næst skaltu velja Easy aðferð fyrir HTTP beiðnir og ýta á Enter til að halda áfram.

12. Að lokum, ef allt gekk snurðulaust, ætti að birtast hamingjuskilaboð á skjánum. Ýttu á Enter til að sleppa kveðjunni.

Það er það! Þú hefur gefið út SSL/TLS vottorð fyrir lénið þitt. Nú geturðu byrjað að vafra um vefsíðuna þína með HTTPS samskiptareglum.

Skref 4: Prófaðu ókeypis Við skulum dulkóða dulkóðun á léni

13. Til að prófa réttleika SSL/TLS handabandi lénsins þíns skaltu fara á tengilinn hér að neðan og prófa vottorðið þitt á léninu þínu.

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

14. Ef þú færð röð skýrslna um varnarleysi lénsins þíns í prófunum sem gerðar voru, þá þarftu að laga þessi öryggisgöt sem fyrst.

Heildareinkunn á C flokki gerir lénið þitt mjög óöruggt. Til að laga þessi öryggisvandamál skaltu opna Apache SSL stillingarskrá og gera eftirfarandi breytingar:

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

Leitaðu að línu með SSLProtocol yfirlýsingu og bættu -SSLv3 við í lok línunnar.

Farðu dýpra í skrána, leitaðu og skrifaðu athugasemdir við línuna með SSLCipherSuite með því að setja # fyrir framan hana og bæta við eftirfarandi efni undir þessa línu:

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. Eftir að þú hefur gert allar ofangreindar breytingar, vistaðu og lokaðu skránni og endurræstu síðan Apache púkann til að beita breytingum.

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

16. Nú, prófar stöðu dulkóðunar léns þíns aftur með því að fara á sama hlekk og hér að ofan. Til að framkvæma endurprófanir skaltu smella á Hreinsa skyndiminni hlekkinn af vefsíðunni.

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

Nú ættir þú að fá A flokks heildareinkunn, sem þýðir að lénið þitt er mjög öruggt.

Skref 4: Endurnýja sjálfkrafa við skulum dulkóða vottorð á Apache

17. Þessi beta útgáfa af Let's Encrypt hugbúnaðinum gefur út vottorð með fyrningardagsetningu eftir 90 daga. Svo, til að endurnýja SSL vottorðið, verður þú að framkvæma letsencrypt-auto skipunina aftur fyrir gildistíma, með sömu valmöguleikum og merkjum og notaðir voru til að fá upphafsvottorð.

Dæmi um hvernig á að endurnýja skírteinið handvirkt er kynnt hér að neðan.

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

18. Til að gera þetta ferli sjálfvirkt skaltu búa til eftirfarandi bash forskrift sem github erikaheidi gefur, í /usr/local/bin/ möppu með eftirfarandi innihaldi. (handritið er lítillega breytt til að endurspegla letsencrypt uppsetningarskrána okkar).

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

Bættu eftirfarandi efni við le-renew-centos skrána:

!/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. Veittu framkvæmdarheimildir fyrir handritið, settu upp bc pakkann og keyrðu handritið til að prófa það. Notaðu lénið þitt sem staðsetningarbreytu fyrir handritið. Gefðu út eftirfarandi skipanir til að ná þessu skrefi:

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

20. Að lokum, með því að nota Linux tímasetningu, bættu við nýju cron verki til að keyra handritið á tveggja mánaða fresti og tryggðu að skírteinið þitt verði uppfært áður en það rennur út.

# crontab -e

Bættu við eftirfarandi línu neðst í skránni.

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

Það er það! Apache þjónninn þinn sem keyrir ofan á CentOS/RHEL kerfinu er nú að þjóna SSL efni með því að nota ókeypis Let's Encrypt SSL vottorð.