ວິທີການຮັບປະກັນ Nginx ດ້ວຍການປ່ອຍຂໍ້ມູນເຂົ້າລະຫັດໃນ Ubuntu ແລະ Debian


ປະຕິບັດຕາມບົດແນະ ນຳ ຂອງ Let’s Encrypt ກ່ຽວກັບ Apache SSL, ໃນບົດຄວາມນີ້ພວກເຮົາຈະປຶກສາຫາລືກ່ຽວກັບວິທີການສ້າງແລະຕິດຕັ້ງໃບຢັ້ງຢືນ SSL/TLS ຟຣີທີ່ອອກໂດຍ Let’s Encrypt CA ສຳ ລັບ Nginx webserver ໃນ Ubuntu ຫຼື Debian.

<

  • ຮັບປະກັນການໃຊ້ Apache ດ້ວຍການຂຽນລະຫັດລັບຂອງ Let Let’s Encrypt ໃນ Ubuntu ແລະ Debian
  • ຕິດຕັ້ງ Let’s encryption SSL ເພື່ອຮັບປະກັນ Apache ໃນ RHEL ແລະ CentOS
  • <

  • ໂດເມນທີ່ຈົດທະບຽນພ້ອມດ້ວຍລະຫັດ DNS ທີ່ຖືກຕ້ອງ <ລະຫັດຜ່ານ ເພື່ອຊີ້ໄປທີ່ຢູ່ IP ຂອງເຊີບເວີຂອງທ່ານ.
  • ເຄື່ອງແມ່ຂ່າຍເວັບໄຊຕ໌ Nginx ທີ່ຕິດຕັ້ງດ້ວຍ SSL ແລະ Vhost ທີ່ເປີດໃຊ້, ໃນກໍລະນີທີ່ທ່ານວາງແຜນທີ່ຈະໂຮດຫລາຍໂດເມນຫລືໂດເມນຍ່ອຍ.
  • ຂັ້ນຕອນທີ 1: ການຕິດຕັ້ງ Nginx Web Server

    1. ໃນຂັ້ນຕອນ ທຳ ອິດຕິດຕັ້ງ Nginx web server, ຖ້າບໍ່ໄດ້ຕິດຕັ້ງຢູ່ແລ້ວ, ໂດຍການອອກ ຄຳ ສັ່ງຂ້າງລຸ່ມນີ້:

    $ sudo apt-get install nginx
    

    ຂັ້ນຕອນທີ 2: ສ້າງໃບຢັ້ງຢືນ SSL ຂອງ Let’s encryption SSL ສຳ ລັບ Nginx

    2. ກ່ອນທີ່ຈະຜະລິດໃບຢັ້ງຢືນ SSL/TLS ໂດຍບໍ່ເສຍຄ່າ, ໃຫ້ຕິດຕັ້ງໂປແກຼມ Encrypt ຂອງ Let ໃຫ້ຢູ່ໃນລະບົບແຟ້ມລະບົບ /usr/local/ ໂດຍການຊ່ວຍເຫຼືອຂອງ git client ໂດຍການອອກ ຄຳ ສັ່ງຂ້າງລຸ່ມນີ້:

    $ sudo apt-get -y install git
    $ cd /usr/local/
    $ sudo git clone https://github.com/letsencrypt/letsencrypt
    

    3. ເຖິງແມ່ນວ່າຂັ້ນຕອນໃນການໄດ້ຮັບໃບຢັ້ງຢືນ Nginx ແມ່ນອັດຕະໂນມັດ, ທ່ານຍັງສາມາດສ້າງແລະຕິດຕັ້ງໃບຢັ້ງຢືນ SSL ໂດຍບໍ່ເສຍຄ່າ ສຳ ລັບ Nginx ໂດຍໃຊ້ໂປແກຼມ Let's Encrypt Standalone.

    ວິທີການນີ້ຮຽກຮ້ອງໃຫ້ພອດ 80 ບໍ່ຕ້ອງຖືກ ນຳ ໃຊ້ໃນລະບົບຂອງທ່ານເປັນໄລຍະເວລາສັ້ນໆໃນຂະນະທີ່ Let ໃຫ້ລູກຄ້າເຂົ້າລະຫັດຢືນຢັນເອກະລັກຂອງເຊີບເວີກ່ອນທີ່ຈະຜະລິດໃບຢັ້ງຢືນ.

    ໃນກໍລະນີທີ່ທ່ານ ກຳ ລັງໃຊ້ Nginx ຢູ່ແລ້ວ, ໃຫ້ຢຸດການບໍລິການໂດຍອອກ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

    $ sudo service nginx stop
    OR
    $ sudo systemctl stop nginx
    

    ໃນກໍລະນີທີ່ທ່ານ ກຳ ລັງ ດຳ ເນີນການບໍລິການອື່ນທີ່ຜູກຢູ່ໃນ port 80 ຢຸດບໍລິການນັ້ນເຊັ່ນກັນ.

    4. ຢືນຢັນວ່າ port 80 ແມ່ນບໍ່ເສຍຄ່າໂດຍການແລ່ນ ຄຳ ສັ່ງ netstat:

    $ sudo netstat -tlpn | grep 80
    

    5. ດຽວນີ້ເຖິງເວລາທີ່ຈະໃຊ້ລະຫັດເພື່ອໃຫ້ໄດ້ໃບຢັ້ງຢືນ SSL. ເຂົ້າສູ່ລະບົບການຕິດຕັ້ງ Let's Encrypt ທີ່ພົບໃນເສັ້ນທາງລະບົບ/usr/local/letsencrypt ແລະ ດຳ ເນີນການ commandencrypt-auto ໂດຍໃຫ້ທາງ --standalone ທີ່ມີໃບຍ້ອງຍໍແລະ ໝາຍ -d ສຳ ລັບ ແຕ່ລະໂດເມນຫລືໂດເມນຍ່ອຍທີ່ທ່ານຕ້ອງການສ້າງໃບຢັ້ງຢືນ.

    $ cd /usr/local/letsencrypt
    $ sudo ./letsencrypt-auto certonly --standalone -d your_domain.tld 
    

    6. ກະລຸນາໃສ່ທີ່ຢູ່ອີເມວເຊິ່ງຈະຖືກໃຊ້ໂດຍ Let’s Encrypt ສຳ ລັບການກູ້ຄືນຂໍ້ມູນ ສຳ ຄັນຫຼືການແຈ້ງເຕືອນທີ່ຮີບດ່ວນ.

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

    8. ສຸດທ້າຍ, ຖ້າທຸກຢ່າງປະສົບຜົນ ສຳ ເລັດ, ຂໍ້ຄວາມທີ່ຄ້າຍຄືກັບ ໜ້າ ຈໍຂ້າງລຸ່ມນີ້ຄວນຈະປາກົດຢູ່ເທິງ console ຂອງທ່ານ.

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

    9. ຕອນນີ້ໃບຢັ້ງຢືນ SSL ຂອງທ່ານຖືກສ້າງຂື້ນມາແມ່ນເວລາທີ່ຈະ ກຳ ນົດ Nginx webserver ເພື່ອໃຊ້ມັນ. ໃບຢັ້ງຢືນ SSL ໃໝ່ໆ ແມ່ນຖືກຈັດໃສ່ໃນ /etc/letsencrypt/live/ ພາຍໃຕ້ໄດເລກະທໍລີທີ່ມີຊື່ຫຼັງຊື່ໂດເມນຂອງທ່ານ. ດໍາເນີນການຄໍາສັ່ງ ls ເພື່ອລາຍຊື່ໄຟລ໌ໃບຢັ້ງຢືນທີ່ອອກສໍາລັບໂດເມນຂອງທ່ານ.

    $ sudo ls /etc/letsencrypt/live/
    $ sudo ls -al /etc/letsencrypt/live/caeszar.tk
    

    10. ຕໍ່ໄປ, ເປີດ /etc/nginx/sites-available/default ແຟ້ມກັບບັນນາທິການຕົວ ໜັງ ສືແລະເພີ່ມທ່ອນໄມ້ຕໍ່ໄປນີ້ຫຼັງຈາກເສັ້ນ ຄຳ ເຫັນຄັ້ງ ທຳ ອິດທີ່ລະບຸຈຸດເລີ່ມຕົ້ນຂອງທ່ອນໄມ້ SSL. ໃຊ້ ໜ້າ ຈໍຂ້າງລຸ່ມນີ້ເປັນ ຄຳ ແນະ ນຳ.

    $ sudo nano /etc/nginx/sites-enabled/default
    

    ບົດຄັດຫຍໍ້ຂອງ Nginx:

    # SSL configuration
            #
            listen 443 ssl default_server;
            ssl_certificate /etc/letsencrypt/live/caeszar.tk/fullchain.pem;
            ssl_certificate_key /etc/letsencrypt/live/caeszar.tk/privkey.pem;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            ssl_prefer_server_ciphers on;
            ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
            ssl_dhparam /etc/nginx/ssl/dhparams.pem;
    

    ປ່ຽນແທນຄ່າຊື່ໂດເມນ ສຳ ລັບໃບຢັ້ງຢືນ SSL ຕາມຄວາມ ເໝາະ ສົມ.

    11. ໃນບາດກ້າວຕໍ່ໄປສ້າງ Diffie-Hellman cipher ທີ່ເຂັ້ມແຂງໃນ/etc/nginx/ssl/directory ເພື່ອປົກປ້ອງ server ຂອງທ່ານຕໍ່ກັບການໂຈມຕີ Logjam ໂດຍການແລ່ນ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

    $ sudo mkdir /etc/nginx/ssl
    $ cd /etc/nginx/ssl
    $ sudo openssl dhparam -out dhparams.pem 2048
    

    12. ສຸດທ້າຍ, ເລີ່ມຕົ້ນ Nginx daemon ເພື່ອສະທ້ອນການປ່ຽນແປງ.

    $ sudo systemctl restart nginx
    

    ແລະທົດສອບໃບຢັ້ງຢືນ SSL ຂອງທ່ານໂດຍການເຂົ້າເບິ່ງທີ່ຢູ່ URL ຂ້າງລຸ່ມນີ້.

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

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

    13. ໃບຢັ້ງຢືນທີ່ອອກໃຫ້ໂດຍ Let’s Encrypt CA ແມ່ນໃຊ້ໄດ້ 90 ວັນ. ເພື່ອປັບປຸງອັດຕະໂນມັດຕໍ່ແຟ້ມເອກະສານກ່ອນວັນ ໝົດ ອາຍຸການສ້າງລະຫັດ bash ssl-renew.sh ທີ່ຢູ່ໃນລະບົບ /usr/local/bin/ ທີ່ມີເນື້ອຫາຕໍ່ໄປນີ້.

    $ sudo nano /usr/local/bin/ssl-renew.sh
    

    ຕື່ມເນື້ອໃນຕໍ່ໄປນີ້ໃສ່ ssl-renew.sh file.

    #!/bin/bash
    
    cd /usr/local/letsencrypt
    sudo ./letsencrypt-auto certonly -a webroot --agree-tos --renew-by-default --webroot-path=/var/www/html/ -d your_domain.tld
    sudo systemctl reload nginx
    exit 0
    

    ທົດແທນການປ່ຽນແປງ --webroot-path ຕົວປ່ຽນແປງໃຫ້ກົງກັບຮາກເອກະສານ Nginx ຂອງທ່ານ. ໃຫ້ແນ່ໃຈວ່າສະຄິບສາມາດປະຕິບັດໄດ້ໂດຍການອອກ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

    $ sudo chmod +x /usr/local/bin/ssl-renew.sh
    

    14. ສຸດທ້າຍເພີ່ມວຽກ cron ເພື່ອແລ່ນສະຄຣິບທຸກໆສອງເດືອນໃນເວລາທ່ຽງຄືນເພື່ອຮັບປະກັນວ່າໃບຢັ້ງຢືນຂອງທ່ານຈະຖືກປັບປຸງໃນປະມານ 30 ວັນກ່ອນທີ່ມັນຈະ ໝົດ ອາຍຸ.

    $ sudo crontab -e
    

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

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

    ນັ້ນແມ່ນມັນ! ເຊີບເວີ Nginx ຂອງທ່ານ ກຳ ລັງໃຫ້ບໍລິການເນື້ອຫາ SSL ໂດຍໃຊ້ໃບຢັ້ງຢືນ SSL ຂອງ Let’s Encrypt SSL ຟຣີ.