ວິທີການຕິດຕັ້ງສາມາດເຮັດໃຫ້ລະຫັດ SSL ໃບຢັ້ງຢືນເພື່ອຮັບປະກັນ Apache ໃນ RHEL/CentOS 7/6


ການຂະຫຍາຍ ຄຳ ແນະ ນຳ Let's Encrypt ຄັ້ງສຸດທ້າຍກ່ຽວກັບໃບຢັ້ງຢືນທີ່ບໍ່ເສຍຄ່າ SSL/TLS, ໃນບົດຄວາມນີ້ພວກເຮົາຈະສະແດງວິທີການຮັບແລະຕິດຕັ້ງໃບຢັ້ງຢືນ SSL/TLS ທີ່ອອກໃຫ້ໂດຍ Let’s Encrypt Certificate Authority ສຳ ລັບ server web Apache ໃນ CentOS/RHEL 7/6 ແລະ Fedora ການແຈກຢາຍເຊັ່ນກັນ.

ຖ້າທ່ານ ກຳ ລັງຊອກຫາການຕິດຕັ້ງ Let’s Encrypt for Apache ໃນ Debian ແລະ Ubuntu, ໃຫ້ເຮັດຕາມ ຄຳ ແນະ ນຳ ຂ້າງລຸ່ມນີ້:

<

  • ຊື່ໂດເມນທີ່ຈົດທະບຽນພ້ອມດ້ວຍລະຫັດທີ່ຖືກຕ້ອງ <ລະຫັດຜ່ານ ເພື່ອຊີ້ໄປທີ່ IP address ສາທາລະນະຂອງ server ຂອງທ່ານ.
  • server server ຕິດຕັ້ງດ້ວຍໂມດູນ SSL ທີ່ເປີດໃຊ້ງານແລະ Virtual Hosting ຖືກເປີດໃຊ້ໃນກໍລະນີທີ່ທ່ານ ກຳ ລັງໂຮດຢູ່ໃນຫລາຍໂດເມນຫລືໂດເມນຍ່ອຍ.
  • ຂັ້ນຕອນທີ 1: ຕິດຕັ້ງ Apache Web Server

    1. ຖ້າບໍ່ໄດ້ຕິດຕັ້ງແລ້ວ, httpd daemon ສາມາດຕິດຕັ້ງໄດ້ໂດຍການອອກ ຄຳ ສັ່ງຂ້າງລຸ່ມນີ້:

    # yum install httpd
    

    2. ເພື່ອໃຫ້ຊອບແວລະຫັດຂອງ Let’s ເຮັດວຽກກັບ Apache, ຮັບປະກັນວ່າໂມດູນ SSL/TLS ຖືກຕິດຕັ້ງໂດຍການອອກ ຄຳ ສັ່ງຂ້າງລຸ່ມນີ້:

    # yum -y install mod_ssl
    

    3. ສຸດທ້າຍ, ເລີ່ມຕົ້ນ Apache server ດ້ວຍ ຄຳ ສັ່ງຕໍ່ໄປນີ້:

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

    ຂັ້ນຕອນທີ 2: ຕິດຕັ້ງ Let’s encryption SSL Certificate

    ວິທີທີ່ງ່າຍທີ່ສຸດໃນການຕິດຕັ້ງລູກຄ້າ Let’s Encrypt ແມ່ນໂດຍການກົດເກັບຂໍ້ມູນ github ໃນລະບົບແຟ້ມຂອງທ່ານ. ເພື່ອຕິດຕັ້ງ git ໃນລະບົບຂອງທ່ານທ່ານຕ້ອງເປີດໃຊ້ Epel repositories ດ້ວຍ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

    # yum install epel-release
    

    5. ເມື່ອ Epel repos ຖືກເພີ່ມເຂົ້າໃນລະບົບຂອງທ່ານ, ສືບຕໍ່ເດີນ ໜ້າ ແລະຕິດຕັ້ງ git client ໂດຍການແລ່ນ ຄຳ ສັ່ງຂ້າງລຸ່ມນີ້:

    # yum install git
    

    6. ດຽວນີ້, ເມື່ອທ່ານໄດ້ຕິດຕັ້ງທຸກເອກະສານທີ່ຂື້ນກັບທີ່ຕ້ອງການເພື່ອຈັດການກັບ Let's Encrypt, ໃຫ້ໄປທີ່ໄດເລກະທໍລີ /usr/local/ ແລະເລີ່ມດຶງລູກຄ້າ Let's Encrypt ປະກອບເປັນຫໍສະມຸດ github ຢ່າງເປັນທາງການໂດຍມີດັ່ງຕໍ່ໄປນີ້ ຄຳ ສັ່ງ:

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

    ຂັ້ນຕອນທີ 3: ໄດ້ຮັບໃບຢັ້ງຢືນ SSL ຂອງ Free Let’s encryption ສຳ ລັບ Apache

    7. ຂັ້ນຕອນຂອງການໄດ້ຮັບໃບຢັ້ງຢືນລະຫັດ Let’s Encrypt ສຳ ລັບ Apache ແມ່ນອັດຕະໂນມັດ ສຳ ລັບ CentOS/RHEL ຂໍຂອບໃຈກັບ plugin apache.

    ໃຫ້ໃຊ້ ຄຳ ສັ່ງຂອງອັກສອນລະຫັດຂອງ Encrypt ເພື່ອໃຫ້ໄດ້ໃບຢັ້ງຢືນ SSL. ເຂົ້າສູ່ລະບົບການຕິດຕັ້ງ Let's Encrypt ຈາກ /usr/local/letsencrypt ແລະ ດຳ ເນີນການ ຄຳ ສັ່ງ letsencrypt-auto ໂດຍໃຫ້ ຄຳ ສັ່ງ --apache ແລະ -d ທຸງ ສຳ ລັບທຸກໆໂດເມນຍ່ອຍທີ່ທ່ານຕ້ອງການໃບຢັ້ງຢືນ.

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

    8. ສະ ໜອງ ທີ່ຢູ່ອີເມວທີ່ຈະຖືກໃຊ້ໂດຍ Let’s Encrypt ເພື່ອເອົາປຸ່ມທີ່ຫາຍໄປຂອງທ່ານຫຼື ສຳ ລັບການແຈ້ງເຕືອນດ່ວນແລະກົດ Enter ເພື່ອ ດຳ ເນີນການຕໍ່ໄປ.

    9. ຕົກລົງເງື່ອນໄຂຂອງໃບອະນຸຍາດໂດຍກົດປຸ່ມ Enter.

    10. ໃນ CentOS/RHEL, ໂດຍຄ່າເລີ່ມຕົ້ນ, ເຄື່ອງແມ່ຂ່າຍຂອງ Apache ບໍ່ໃຊ້ແນວຄວາມຄິດຂອງການແຍກລາຍຊື່ ສຳ ລັບຜູ້ໃຫ້ບໍລິການທີ່ເປີດໃຊ້ງານຈາກເຈົ້າພາບທີ່ມີ (ບໍ່ເຄື່ອນໄຫວ) ຄືກັບການແຈກຈ່າຍທີ່ Debian based ເຮັດ.

    ນອກຈາກນີ້, ການໂຮດຕິ້ງເສມືນແມ່ນຖືກປິດໂດຍຄ່າເລີ່ມຕົ້ນ. ໃບລາຍງານ Apache ທີ່ລະບຸຊື່ຂອງເຄື່ອງແມ່ຂ່າຍ (ServerName) ມັນບໍ່ມີຢູ່ໃນເອກະສານການຕັ້ງຄ່າ SSL.

    ເພື່ອເປີດໃຊ້ ຄຳ ສັ່ງນີ້, Let’s Encrypt ຈະກະຕຸ້ນທ່ານໃຫ້ເລືອກໂຮດທີ່ແທ້ຈິງ. ເນື່ອງຈາກວ່າມັນບໍ່ພົບ Vhost ທີ່ມີຢູ່, ໃຫ້ເລືອກແຟ້ມເອກະສານ ssl.conf ເພື່ອດັດແປງໂດຍອັດຕະໂນມັດໂດຍລູກຄ້າຂອງ Encrypt ແລະກົດ Enter ເພື່ອສືບຕໍ່.

    11. ຕໍ່ໄປ, ເລືອກວິທີງ່າຍໆ ສຳ ລັບການຮ້ອງຂໍ HTTP ແລະກົດ Enter ເພື່ອກ້າວໄປຂ້າງ ໜ້າ.

    12. ສຸດທ້າຍ, ຖ້າທຸກຢ່າງ ດຳ ເນີນໄປຢ່າງສະດວກ, ຂໍ້ຄວາມອວຍພອນຄວນສະແດງຢູ່ ໜ້າ ຈໍ. ກົດ Enter ເພື່ອປ່ອຍການກະຕຸ້ນເຕືອນ.

    ນັ້ນແມ່ນມັນ! ທ່ານໄດ້ອອກໃບຢັ້ງຢືນ SSL/TLS ສຳ ລັບໂດເມນຂອງທ່ານແລ້ວ. ຕອນນີ້ທ່ານສາມາດເລີ່ມຕົ້ນຊອກຫາເວັບໄຊທ໌ຂອງທ່ານໂດຍໃຊ້ໂປຣແກຣມ HTTPS.

    ຂັ້ນຕອນທີ 4: ທົດສອບການເຂົ້າລະຫັດແບບ Free Let’s encryption ໃນໂດເມນ

    13. ເພື່ອທົດສອບຄວາມຖືກຕ້ອງຂອງໂດເມນຂອງທ່ານ SSL/TLS ຈັບມືເຂົ້າເບິ່ງລິ້ງຂ້າງລຸ່ມນີ້ແລະທົດສອບໃບຢັ້ງຢືນຂອງທ່ານໃນໂດເມນຂອງທ່ານ.

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

    14. ຖ້າທ່ານໄດ້ຮັບບົດລາຍງານຫຼາຍໆຢ່າງກ່ຽວກັບຄວາມສ່ຽງຂອງໂດເມນຂອງທ່ານໃນການທົດສອບທີ່ຖືກ ດຳ ເນີນການ, ທ່ານ ຈຳ ເປັນຕ້ອງແກ້ໄຂບັນຫາຄວາມປອດໄພເຫຼົ່ານັ້ນຢ່າງຮີບດ່ວນ.

    ການຈັດອັນດັບໂດຍລວມຂອງຊັ້ນ C ເຮັດໃຫ້ໂດເມນຂອງທ່ານບໍ່ປອດໄພຫຼາຍ. ເພື່ອແກ້ໄຂບັນຫາຄວາມປອດໄພເຫຼົ່ານີ້, ເປີດເອກະສານການຕັ້ງຄ່າ Apache SSL ແລະເຮັດການປ່ຽນແປງດັ່ງຕໍ່ໄປນີ້:

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

    ຄົ້ນຫາ ສຳ ລັບເສັ້ນທີ່ມີ ຄຳ ຖະແຫຼງ SSLProtocol ແລະເພີ່ມ -SSLv3 ໃນຕອນທ້າຍຂອງແຖວ.

    ເຂົ້າໄປໃນແຟ້ມເອກະສານໃຫ້ເລິກຂື້ນ, ຄົ້ນຫາແລະປະກອບ ຄຳ ເຫັນກັບ SSLCipherSuite ໂດຍໃສ່ # ຢູ່ທາງ ໜ້າ ຂອງມັນແລະເພີ່ມເນື້ອໃນຕໍ່ໄປນີ້ຢູ່ໃຕ້ເສັ້ນນີ້:

    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. ຫຼັງຈາກທີ່ທ່ານໄດ້ເຮັດການປ່ຽນແປງທັງ ໝົດ ຂ້າງເທິງ, ບັນທຶກແລະປິດເອກະສານ, ຫຼັງຈາກນັ້ນ restart daemon Apache ເພື່ອ ນຳ ໃຊ້ການປ່ຽນແປງ.

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

    16. ດຽວນີ້, ທົດສອບສະຖານະຂອງການເຂົ້າລະຫັດໂດເມນຂອງທ່ານອີກຄັ້ງ, ໂດຍການເຂົ້າເບິ່ງລິ້ງດຽວກັນກັບຂ້າງເທິງ. ເພື່ອປະຕິບັດການທົດລອງຄືນກົດປຸ່ມເຊື່ອມຕໍ່ຖານຄວາມ ຈຳ Clear ຈາກເວບໄຊທ໌.

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

    ຕອນນີ້ທ່ານຄວນໄດ້ຮັບຊັ້ນ A ໂດຍລວມ, ຊຶ່ງ ໝາຍ ຄວາມວ່າໂດເມນຂອງທ່ານມີຄວາມປອດໄພສູງ.

    ຂັ້ນຕອນທີ 4: ການຕໍ່ອາຍຸໃບຢັ້ງຢືນໃບຢັ້ງຢືນອັດຕະໂນມັດໃນ Apache

    17. ສະບັບທົດລອງຂອງໂປແກຼມ Let’s Encrypt ສະບັບນີ້ອອກໃບຢັ້ງຢືນພ້ອມກັບວັນ ໝົດ ອາຍຸຫຼັງຈາກ 90 ວັນ. ສະນັ້ນ, ເພື່ອຕໍ່ໃບຢັ້ງຢືນ SSL ໃໝ່, ທ່ານຕ້ອງປະຕິບັດ ຄຳ ສັ່ງ letsencrypt-auto ອີກເທື່ອ ໜຶ່ງ ກ່ອນວັນ ໝົດ ອາຍຸ, ດ້ວຍຕົວເລືອກແລະທຸງທີ່ໃຊ້ເພື່ອຮັບໃບຢັ້ງຢືນເບື້ອງຕົ້ນ.

    ຕົວຢ່າງກ່ຽວກັບວິທີການຕໍ່ໃບຢັ້ງຢືນດ້ວຍຕົນເອງແມ່ນ ນຳ ສະ ເໜີ ຢູ່ລຸ່ມນີ້.

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

    18. ເພື່ອອັດຕະໂນມັດຂະບວນການນີ້, ສ້າງ script bash ຕໍ່ໄປນີ້ໃຫ້ໂດຍ github erikaheidi, ໃນ /usr/local/bin/ ໄດເລກະທໍລີທີ່ມີເນື້ອຫາຕໍ່ໄປນີ້. (ຕົວອັກສອນຖືກດັດແກ້ເລັກນ້ອຍເພື່ອສະທ້ອນໃຫ້ເຫັນໄດເລກະທໍລີການຕິດຕັ້ງທີ່ສາມາດ ນຳ ໃຊ້ .enenite).

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

    ຕື່ມເນື້ອໃນຕໍ່ໄປນີ້ໃສ່ 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. ໃຫ້ການອະນຸຍາດການຈັດຕັ້ງປະຕິບັດ ສຳ ລັບສະຄິບ, ຕິດຕັ້ງຊຸດ bc ແລະແລ່ນ script ເພື່ອທົດສອບມັນ. ໃຊ້ຊື່ໂດເມນຂອງທ່ານເປັນຕົວ ກຳ ນົດ ຕຳ ແໜ່ງ ສຳ ລັບສະຄິບ. ອອກ ຄຳ ສັ່ງລຸ່ມນີ້ເພື່ອເຮັດ ສຳ ເລັດຂັ້ນຕອນນີ້:

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

    20. ສຸດທ້າຍ, ການ ນຳ ໃຊ້ການ ກຳ ນົດເວລາ Linux, ເພີ່ມວຽກ cron ໃໝ່ ເພື່ອ ດຳ ເນີນການຂຽນ script ທຸກໆສອງເດືອນ, ຮັບປະກັນວ່າໃບຢັ້ງຢືນຂອງທ່ານຈະຖືກປັບປຸງກ່ອນວັນ ໝົດ ອາຍຸ.

    # crontab -e
    

    ຕື່ມແຖວຕໍ່ໄປນີ້ຢູ່ທາງລຸ່ມຂອງເອກະສານ.

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

    ນັ້ນແມ່ນມັນ! ເຊີຟເວີ Apache ຂອງທ່ານ ກຳ ລັງແລ່ນຢູ່ເທິງສຸດຂອງລະບົບ CentOS/RHEL ດຽວນີ້ ກຳ ລັງຮັບໃຊ້ເນື້ອຫາ SSL ໂດຍໃຊ້ໃບຢັ້ງຢືນ SSL ຂອງ Let’s Encrypt SSL ໂດຍບໍ່ເສຍຄ່າ.