Wéi installéiere léisst d'SSL Zertifikat verschlësselen fir Apache op RHEL/CentOS 7/6 ze sécheren


Verlängeren de leschten Let's Encrypt Tutorial iwwer SSL/TLS gratis Certificaten, an dësem Artikel wäerte mir demonstréieren wéi Dir gratis SSL/TLS Zertifikater kritt an installéiere kënnt vun Let's Encrypt Certificate Authority fir Apache Webserver op CentOS/RHEL 7/6 a Fedora och Verdeelungen.

Wann Dir sicht Let's Encrypt fir Apache op Debian an Ubuntu z'installéieren, befollegt dëse Guide hei ënnen:

  1. En registréierten Domain Numm mat gëltege A records fir zréck op Är Server ëffentlech IP Adress ze weisen.
  2. Apache Server installéiert mat SSL Modul aktivéiert a Virtuelle Hosting aktivéiert am Fall wou Dir verschidde Domainen oder Ënnerdomains hostt.

Schrëtt 1: Apache Web Server installéieren

1. Wann net schonn installéiert ass, kann httpd Daemon installéiert ginn andeems Dir de Kommando hei ënnen ausgitt:

# yum install httpd

2. Fir datt Let's Encrypt Software mat Apache funktionnéiert, vergewëssert Iech datt den SSL/TLS Modul installéiert ass andeems Dir de Kommando hei drënner ausstellt:

# yum -y install mod_ssl

3. Endlech start Apache Server mat dem folgenden Kommando:

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

Schrëtt 2: Installéiere Let's Encrypt SSL Certificate

4. Déi einfachst Method fir de Let's Encrypt Client z'installéieren ass andeems Dir Github Repository an Ärem Dateiesystem klont. Fir Git op Ärem System z'installéieren musst Dir Epel Repositories mat dem folgenden Kommando aktivéieren.

# yum install epel-release

5. Wann d'Epel Repos an Ärem System bäigefüügt sinn, gitt vir an installéiere git Client andeems Dir de Kommando hei drënner leeft:

# yum install git

6. Elo, wann Dir all déi erfuerderlech Ofhängegkeeten installéiert hutt fir mat Let's Encrypt ze handelen, gitt op /usr/local/ Verzeechnes a fänkt un de Let's Encrypt Client aus sengem offiziellen Github Repository ze zéien mat dem folgenden Kommando:

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

Schrëtt 3: Kritt e Gratis Let's Encrypt SSL Certificate fir Apache

7. De Prozess fir e gratis Let's Encrypt Certificate fir Apache ze kréien ass automatiséiert fir CentOS/RHEL dank dem Apache Plugin.

Loosst eis Let's Encrypt Script Kommando lafen fir en SSL Zertifika ze kréien. Gitt op Let's Encrypt Installatiounsverzeechnes vun /usr/local/letsencrypt a fuert de Kommando letsencrypt-auto andeems Dir --apache Optioun ubitt an d'-d Fändel fir all Ënnerdomain Dir braucht e Certificat.

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

8. Gitt d'E-Mailadress un, déi vu Let's Encrypt benotzt gëtt fir Äre verluerene Schlëssel ze recuperéieren oder fir dréngend Notifikatiounen an dréckt Enter fir weiderzemaachen.

9. Averstanen d'Konditioune vun der Lizenz andeems Dir Enter Schlëssel dréckt.

10. Op CentOS/RHEL, par défaut, benotzt den Apache Server net d'Konzept fir Verzeichnungen ze trennen fir aktivéiert Hosten vun verfügbaren (inaktiven) Hosten wéi Debian baséiert Verdeelung mécht.

Och virtuelle Hosting ass standardiséiert ausgeschalt. D'Apache Ausso déi den Numm vum Server spezifizéiert (ServerName) ass net präsent op der SSL Konfiguratiounsdatei.

Fir dës Direktiv z'aktivéieren, Let's Encrypt freet Iech e virtuelle Host ze wielen. Well et keng Vhost verfügbar fënnt, wielt d'ssl.conf Datei fir automatesch vum Let's Encrypt Client geännert ze ginn an dréckt Enter fir weiderzemaachen.

11. Wielt dann d'Einfach Method fir HTTP-Ufroen an dréckt Enter fir no vir ze goen.

12. Schlussendlech, wann alles glat gaangen ass, soll e Gratulatiounsmessage um Bildschierm ugewise ginn. Dréckt Enter fir d'Prompt ze befreien.

Dat ass et! Dir hutt erfollegräich en SSL/TLS Zertifika fir Är Domain ausgestallt. Elo kënnt Dir ufänken Är Websäit mam HTTPS Protokoll ze surfen.

Schrëtt 4: Test Gratis Loosst eis Verschlësselung op Domain verschlësselen

13. Fir d'Richtegkeet vun Ärem Domain SSL/TLS Handshake ze testen, besicht de Link hei ënnen an test Ären Zertifika op Ärem Domain.

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

14. Wann Dir eng Serie vu Berichter betreffend Är Domain Schwachstelle bei den duerchgefouerten Tester kritt, da musst Dir déi Sécherheetslächer dringend fixéieren.

Eng Gesamtbewäertung vun der C Klass mécht Är Domain ganz onsécher. Fir dës Sécherheetsproblemer ze fixéieren, öffnen d'Apache SSL Konfiguratiounsdatei a maacht déi folgend Ännerungen:

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

Sich no Linn mat SSLProtocol Ausso a füügt -SSLv3 um Enn vun der Zeil dobäi.

Gitt méi déif an d'Datei, sicht a kommentéiert d'Linn mat SSLCipherSuite andeems Dir e # virun der Plaz setzt an de folgenden Inhalt ënnert dëser Linn bäidréit:

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. Nodeems Dir all déi uewe genannte Ännerunge gemaach hutt, späichert d'Datei a schléisst d'Datei zou, da fänkt den Apache-Daemon nei fir Ännerungen z'applizéieren.

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

16. Elo, testt de Status vun Ärer Domain Verschlësselung erëm, andeems Dir dee selwechte Link wéi uewen besicht. Fir nei Tester auszeféieren, klickt op de Clear Cache Link vun der Websäit.

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

Elo sollt Dir eng Klass A Gesamtbewäertung kréien, dat heescht datt Ären Domain héich geséchert ass.

Schrëtt 4: Auto Erneierung Loosst eis Zertifikater op Apache verschlësselen

17. Dës Beta Versioun vun Let's Encrypt Software verëffentlecht Certificaten mat Verfallsdatum no 90 Deeg. Also, fir den SSL Zertifika ze erneieren, musst Dir de Kommando letsencrypt-auto nach eng Kéier virum Verfallsdatum ausféieren, mat de selwechte Optiounen a Fändelen déi benotzt gi fir den initialen Zertifika ze kréien.

E Beispill wéi een den Zertifika manuell erneiert gëtt hei ënnendrënner.

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

18. Fir dëse Prozess ze automatiséieren, erstellt de folgende Bash-Skript vum github erikaheidi, am /usr/local/bin/ Verzeechnes mat dem folgenden Inhalt. (de Skript ass liicht geännert fir eisen letsencrypt Installatiounsverzeechnes ze reflektéieren).

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

Füügt de folgenden Inhalt op le-renew-centos Datei:

!/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. Gitt Ausféierungsrechter fir de Skript, installéiere bc Package a lafen de Skript fir et ze testen. Benotzt Ären Domain Numm als Positiounsparameter fir de Skript. Gitt déi folgend Kommandoen aus fir dëse Schrëtt z'erreechen:

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

20. Endlech, benotzt Linux Scheduling, füügt eng nei Cron-Job un fir de Skript all zwee Méint auszeféieren, a garantéiert datt Ären Zertifika virum Verfallsdatum aktualiséiert gëtt.

# crontab -e

Füügt déi folgend Zeil um Enn vun der Datei.

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

Dat ass et! Ären Apache Server, deen uewen um CentOS/RHEL System leeft, servéiert elo SSL Inhalt mat engem gratis Let's Encrypt SSL Zertifikat.