Sådan installeres Lader krypteres SSL-certifikat til sikker Apache på RHEL/CentOS 7/6


Udvidelse af den sidste Let's Encrypt-tutorial om SSL/TLS-gratis certifikater. I denne artikel vil vi demonstrere, hvordan man får og installerer gratis SSL/TLS-certifikater udstedt af Let's Encrypt Certificate Authority til Apache-webserver på CentOS/RHEL 7/6 og Fedora distributioner også.

Hvis du ønsker at installere Lad os kryptere til Apache på Debian og Ubuntu, skal du følge denne vejledning nedenfor:

  1. Et registreret domænenavn med gyldige A poster for at pege tilbage til din server offentlige IP-adresse.
  2. Apache-server installeret med SSL-modul aktiveret og Virtual Hosting aktiveret, hvis du er vært for flere domæner eller underdomæner.

Trin 1: Installer Apache-webserver

1. Hvis den ikke allerede er installeret, kan httpd-dæmonen installeres ved at udstede kommandoen nedenfor:

# yum install httpd

2. For at Lad os kryptere software til at arbejde med Apache, skal du sikre dig, at SSL/TLS-modulet er installeret ved at udstede kommandoen nedenfor:

# yum -y install mod_ssl

3. Endelig skal du starte Apache-serveren med følgende kommando:

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

Trin 2: Installer Lad os kryptere SSL-certifikat

4. Den enkleste metode til installation af Lad os kryptere klienten er ved at klone github-arkivet i dit filsystem. For at installere git på dit system skal du aktivere Epel repositories med følgende kommando.

# yum install epel-release

5. Når Epel repos er tilføjet i dit system, skal du fortsætte og installere git-klienten ved at køre kommandoen nedenfor:

# yum install git

6. Når du først har installeret alle de nødvendige afhængigheder for at håndtere Let's Encrypt, skal du gå til /usr/local/ biblioteket og begynde at trække Let's Encrypt-klienten fra dets officielle github-arkiv med følgende kommando:

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

Trin 3: Få et gratis Lad os kryptere SSL-certifikat til Apache

7. Processen med at få et gratis Lad os kryptere certifikat til Apache automatiseres til CentOS/RHEL takket være apache-pluginet.

Lad os køre Let's Encrypt script-kommando for at få et SSL-certifikat. Gå til Lad os kryptere installationsmappe fra /usr/local/letsencrypt og kør kommandoen letsencrypt-auto ved at give indstillingen --apache og < kode> -d flag for hvert underdomæne, du har brug for et certifikat.

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

8. Angiv den e-mail-adresse, der vil blive brugt af Lad os kryptere for at gendanne din mistede nøgle eller for presserende meddelelser, og tryk på Enter for at fortsætte.

9. Enig licensvilkårene ved at trykke på Enter-tasten.

10. På CentOS/RHEL bruger Apache-serveren som standard ikke konceptet med at adskille mapper for aktiverede værter fra tilgængelige (inaktive) værter som Debian-baseret distribution gør.

Virtuel hosting er også deaktiveret som standard. Apache-erklæringen, der specificerer navnet på serveren (Servernavn), den ikke findes i SSL-konfigurationsfil.

For at aktivere dette direktiv beder Lad os kryptere dig om at vælge en virtuel vært. Fordi den ikke finder nogen tilgængelig Vhost, skal du vælge filen ssl.conf , der automatisk skal ændres af Lad os kryptere klienten, og trykke på Enter for at fortsætte.

11. Vælg derefter den nemme metode til HTTP-anmodninger, og tryk på Enter for at komme videre.

12. Endelig, hvis alt gik glat, skulle der vises en lykønskningsmeddelelse på skærmen. Tryk på Enter for at frigive prompten.

Det er det! Du har med succes udstedt et SSL/TLS-certifikat til dit domæne. Nu kan du begynde at gennemse dit websted ved hjælp af HTTPS-protokol.

Trin 4: Test gratis Lad os kryptere kryptering på domæne

13. For at teste retfærdigheden af dit domæne SSL/TLS-håndtryk skal du besøge nedenstående link og teste dit certifikat på dit domæne.

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

14. Hvis du modtager en række rapporter om dit domænesårbarhed i de udførte tests, skal du omgående rette disse sikkerhedshuller.

En samlet vurdering af C-klasse gør dit domæne meget usikkert. For at løse disse sikkerhedsproblemer skal du åbne Apache SSL-konfigurationsfil og foretage følgende ændringer:

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

Søg efter linje med SSLProtocol -erklæring, og tilføj -SSLv3 i slutningen af linjen.

Gå dybere ned i filen, søg og kommenter linjen med SSLCipherSuite ved at placere en # foran den og tilføj følgende indhold under denne linje:

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. Når du har foretaget alle ovenstående ændringer, skal du gemme og lukke filen og derefter genstarte Apache-dæmonen for at anvende ændringer.

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

16. Test nu status for din domænekryptering igen ved at besøge det samme link som ovenfor. For at udføre omprøvninger skal du trykke på linket Ryd cache fra webstedet.

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

Nu skal du få en klasse A-vurdering, hvilket betyder, at dit domæne er meget sikkert.

Trin 4: Forny automatisk Lad os kryptere certifikater på Apache

17. Denne betaversion af Let’s Encrypt-software frigiver certifikater med udløbsdato efter 90 dage. For at forny SSL-certifikatet skal du udføre kommandoen letsencrypt-auto igen inden udløbsdatoen med de samme muligheder og flag, der bruges til at opnå det oprindelige certifikat.

Nedenfor vises et eksempel på, hvordan man manuelt fornyer certifikatet.

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

18. For at automatisere denne proces skal du oprette følgende bash-script leveret af github erikaheidi i /usr/local/bin/ -mappen med følgende indhold. (scriptet er let modificeret for at afspejle vores letsencrypt-installationsmappe).

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

Føj følgende indhold til filen le-renew-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. Giv tilladelse til udførelse af scriptet, installer bc-pakke og kør scriptet for at teste det. Brug dit domænenavn som en positionsparameter for scriptet. Udsted nedenstående kommandoer for at udføre dette trin:

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

20. Til sidst skal du ved hjælp af Linux-planlægning tilføje et nyt cron-job for at køre scriptet hver anden måned og sikre, at dit certifikat opdateres inden udløbsdatoen.

# crontab -e

Tilføj følgende linje i bunden af filen.

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

Det er det! Din Apache-server, der kører oven på CentOS/RHEL-systemet, serverer nu SSL-indhold ved hjælp af et gratis Lad os kryptere SSL-certifikat.