Giunsa ang Pag-install Lets Encrypt SSL Certificate aron Ma-secure ang Apache sa RHEL/CentOS 7/6


Ang pagpalapad sa katapusang Let's Encrypt nga tutorial bahin sa SSL/TLS free certificates, niining artikuloha atong ipakita kung unsaon pagkuha ug pag-instalar sa libre nga SSL/TLS certificates nga gi-isyu sa Let's Encrypt Certificate Authority para sa Apache web server sa CentOS/RHEL 7/6 ug Fedora mga distribusyon usab.

Kung nangita ka nga i-install ang Let's Encrypt para sa Apache sa Debian ug Ubuntu, sunda kini nga giya sa ubos:

  1. Usa ka rehistradong domain name nga adunay balido nga A nga mga rekord aron itudlo balik sa imong server nga publikong IP Address.
  2. Na-install ang Apache server gamit ang SSL module nga naka-enable ug gi-enable ang Virtual Hosting kung nag-host ka og daghang domain o subdomain.

Lakang 1: I-install ang Apache Web Server

1. Kung wala pa ma-install, ang httpd daemon mahimong ma-install pinaagi sa pag-isyu sa ubos nga sugo:

# yum install httpd

2. Aron ang Let's encrypt software magamit sa Apache, siguroha nga ang SSL/TLS module na-install pinaagi sa pag-isyu sa sugo sa ubos:

# yum -y install mod_ssl

3. Sa katapusan, sugdi ang Apache server gamit ang mosunod nga sugo:

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

Lakang 2: I-install Let's Encrypt SSL Certificate

4. Ang pinakasimple nga paagi sa pag-instalar sa Let's Encrypt nga kliyente mao ang pag-clone sa github repository sa imong filesystem. Aron ma-install ang git sa imong sistema kinahanglan nimo nga magamit ang mga repositoryo sa Epel gamit ang mosunud nga mando.

# yum install epel-release

5. Sa higayon nga ang Epel repos idugang sa imong sistema, ipadayon ug i-install ang git client pinaagi sa pagpadagan sa command sa ubos:

# yum install git

6. Karon, sa higayon nga ma-install na nimo ang tanang gikinahanglang dependencies aron maatubang ang Let's Encrypt, adto sa /usr/local/ directory ug sugdi ang pagbira sa Let's Encrypt client nga porma sa opisyal nga github repository niini uban sa mosunod sugo:

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

Lakang 3: Pagkuha og Libre nga Let's Encrypt SSL Certificate para sa Apache

7. Ang proseso sa pagkuha ug libre nga Let's Encrypt Certificate para sa Apache automated para sa CentOS/RHEL salamat sa apache plugin.

Atong padaganon ang Let's Encrypt script command aron makakuha og SSL Certificate. Adto sa Let's Encrypt installation directory gikan sa /usr/local/letsencrypt ug padagana ang letsencrypt-auto command pinaagi sa paghatag og --apache nga opsyon ug ang -d bandila para sa matag subdomain nga kinahanglan nimo usa ka sertipiko.

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

8. Ihatag ang email address nga gamiton sa Let's Encrypt aron mabawi ang imong nawala nga yawe o alang sa dinalian nga mga pahibalo ug pindota ang Enter aron magpadayon.

9. Pag-uyon sa mga termino sa lisensya pinaagi sa pag-igo sa Enter key.

10. Sa CentOS/RHEL, sa default, ang Apache server wala mogamit sa konsepto sa pagbulag sa mga direktoryo alang sa mga naka-enable nga mga host gikan sa anaa (dili aktibo) nga mga host sama sa gihimo sa Debian based distribution.

Usab, ang virtual nga pag-host gi-disable pinaagi sa default. Ang pahayag sa Apache nga nagtino sa ngalan sa server (ServerName) wala kini sa SSL configuration file.

Aron ma-aktibo kini nga direktiba, ang Let's Encrypt mag-aghat kanimo sa pagpili sa usa ka virtual host. Tungod kay wala kini makit-an nga bisan unsang Vhost nga magamit, pilia ang file nga ssl.conf nga awtomatiko nga usbon sa kliyente nga Let's Encrypt ug pindota ang Enter aron magpadayon.

11. Sunod, pilia ang Easy method para sa HTTP requests ug pindota ang Enter aron mopadayon.

12. Sa katapusan, kung ang tanan hapsay, usa ka mensahe sa pahalipay kinahanglan ipakita sa screen. Pindota ang Enter aron buhian ang prompt.

Mao na! Malampuson ka nga nakahatag ug SSL/TLS nga sertipiko para sa imong domain. Karon mahimo ka magsugod sa pag-browse sa imong website gamit ang HTTPS protocol.

Lakang 4: Sulayi nga Libre Atong I-encrypt ang Encryption sa Domain

13. Aron masulayan ang pagkatul-id sa imong domain SSL/TLS handshake bisitaha ang link sa ubos ug sulayan ang imong sertipiko sa imong domain.

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

14. Kung makadawat ka ug sunod-sunod nga mga taho bahin sa kahuyang sa imong domain sa gipahigayon nga mga pagsulay, nan kinahanglan nimo nga ayohon dayon ang mga lungag sa seguridad.

Ang kinatibuk-ang rating sa C nga klase naghimo sa imong domain nga dili sigurado. Aron ayuhon kini nga mga problema sa seguridad, ablihi ang Apache SSL configuration file ug himoa ang mosunod nga mga kausaban:

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

Pangitaa ang linya nga adunay SSLProtocol nga pahayag ug idugang ang -SSLv3 sa katapusan sa linya.

Lalim pa sa file, pangitaa ug komento ang linya gamit ang SSLCipherSuite pinaagi sa pagbutang og # sa atubangan niini ug idugang ang mosunod nga sulod ubos niini nga linya:

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. Human nimo mahimo ang tanan nga mga pagbag-o sa ibabaw, i-save ug isira ang file, unya i-restart ang Apache daemon aron magamit ang mga pagbag-o.

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

16. Karon, sulayi pag-usab ang kahimtang sa imong domain encryption, pinaagi sa pagbisita sa samang link sama sa ibabaw. Aron mahimo ang mga pag-retest i-klik ang Clear cache link gikan sa website.

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

Karon kinahanglan ka nga makakuha usa ka klase nga kinatibuk-ang rating, nga nagpasabut nga ang imong domain sigurado kaayo.

Lakang 4: Auto Renew Atong I-encrypt ang mga Sertipiko sa Apache

17. Kining beta nga bersyon sa Let's Encrypt software nagpagawas ug mga sertipiko nga adunay expiration date human sa 90 ka adlaw. Busa, aron mabag-o ang sertipiko sa SSL, kinahanglan nimo nga ipatuman pag-usab ang letsencrypt-auto nga mando sa dili pa matapos ang petsa, nga adunay parehas nga mga kapilian ug mga bandila nga gigamit aron makuha ang inisyal nga sertipiko.

Usa ka pananglitan kung giunsa ang mano-mano nga pagbag-o sa sertipiko gipresentar sa ubos.

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

18. Aron ma-automate kini nga proseso, paghimo sa mosunod nga bash script nga gihatag sa github erikaheidi, sa /usr/local/bin/ direktoryo nga adunay mosunod nga sulod. (Ang script gamay nga giusab aron ipakita ang among letsencrypt nga direktoryo sa pag-install).

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

Idugang ang mosunod nga sulod sa le-renew-centos file:

!/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. Paghatag ug pagtugot sa pagpatuman sa script, pag-install sa bc package ug pagdagan ang script aron masulayan kini. Gamita ang imong domain name isip positional parameter para sa script. Ipagawas ang mga sugo sa ubos aron matuman kini nga lakang:

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

20. Sa katapusan, gamit ang pag-iskedyul sa Linux, pagdugang og bag-ong cron job aron mapadagan ang script matag duha ka bulan, pagsiguro nga ang imong sertipiko ma-update sa dili pa ang expiration date.

# crontab -e

Idugang ang mosunod nga linya sa ubos sa file.

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

Mao na! Ang imong Apache server nga nagdagan sa ibabaw sa CentOS/RHEL nga sistema karon nagsilbi sa sulud sa SSL gamit ang usa ka libre nga Let's Encrypt SSL certificate.