Giunsa ang Pag-secure sa Nginx sa Lets Encrypt sa Ubuntu ug Debian


Pagsunod sa miaging Let's Encrypt tutorial bahin sa Apache SSL, sa kini nga artikulo atong hisgutan kung giunsa ang paghimo ug pag-install usa ka libre nga sertipiko sa SSL/TLS nga gi-isyu sa Let's Encrypt CA para sa Nginx webserver sa Ubuntu o Debian.

  1. Secure Apache gamit ang Libre Let's Encrypt sa Ubuntu ug Debian
  2. Install Let's Encrypt SSL to Secure Apache sa RHEL ug CentOS

  1. Usa ka rehistradong dominyo nga adunay balido nga DNS A nga mga rekord aron itudlo balik sa IP address sa imong server.
  2. Usa ka na-install nga Nginx web server nga adunay SSL ug Vhost, kung nagplano ka nga mag-host og daghang mga dominyo o subdomain.

Lakang 1: Pag-instalar sa Nginx Web Server

1. Sa unang lakang i-install ang Nginx web server, kung wala pa ma-install, pinaagi sa pag-isyu sa ubos nga sugo:

$ sudo apt-get install nginx

Lakang 2: Paghimo og Let's Encrypt SSL Certificate para sa Nginx

2. Sa dili pa makahimo ug libre nga SSL/TLS nga sertipiko, i-install ang Let’s Encrypt software sa /usr/local/ filesystem hierarchy uban sa tabang sa git client pinaagi sa pag-isyu sa ubos nga mga sugo:

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

3. Bisan tuod ang pamaagi sa pagkuha og Sertipiko para sa Nginx kay automated, mahimo gihapon nimo nga mano-mano ang paghimo ug pag-instalar og libre nga SSL certificate para sa Nginx gamit ang Let's Encrypt Standalone plugin.

Kini nga pamaagi nanginahanglan nga ang port 80 kinahanglan dili magamit sa imong sistema sa mubo nga panahon samtang ang Let's Encrypt nga kliyente nag-validate sa identidad sa server sa wala pa maghimo sa sertipiko.

Kung nagdagan ka na sa Nginx, hunong ang serbisyo pinaagi sa pag-isyu sa mosunud nga mando.

$ sudo service nginx stop
OR
$ sudo systemctl stop nginx

Kung nagdagan ka sa ubang serbisyo nga nagbugkos sa port 80 hunong usab kana nga serbisyo.

4. Kumpirma nga ang port 80 libre pinaagi sa pagpadagan sa netstat command:

$ sudo netstat -tlpn | grep 80

5. Karon na ang panahon sa pagdagan letsencrypt aron makakuha og SSL Certificate. Adto sa Let's Encrypt installation directory nga makita sa /usr/local/letsencrypt system path ug padagana ang letsencrypt-auto command pinaagi sa paghatag sa certonly --standalone option ug -d flag para matag domain o subdomain nga gusto nimong makamugna og sertipiko.

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

6. Isulod ang email address nga gamiton sa Let's Encrypt para sa nawala nga key recovery o dinalian nga mga pahibalo.

7. Pag-uyon sa mga termino sa lisensya pinaagi sa pagpindot sa Enter key.

8. Sa katapusan, kung ang tanan nahimong malampuson, usa ka mensahe nga susama sa screenshot sa ubos kinahanglan nga makita sa imong terminal console.

Lakang 3: I-install Let's Encrypt SSL Certificate sa Nginx

9. Karon nga ang imong SSL Certificate nahimo na mao ang panahon sa pag-configure sa Nginx webserver aron magamit kini. Ang bag-ong SSL certificates gibutang sa /etc/letsencrypt/live/ ubos sa direktoryo nga gihinganlan sunod sa imong domain name. Pagdalagan ang ls nga sugo aron ilista ang mga Sertipiko nga mga file nga gi-isyu alang sa imong domain.

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

10. Sunod, ablihi ang /etc/nginx/sites-available/default file gamit ang text editor ug idugang ang mosunod nga block human sa unang comment nga linya nga nagtino sa sinugdanan sa SSL block. Gamita ang screenshot sa ubos isip giya.

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

Nginx block kinutlo:

# 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;

Ilisan ang domain name values para sa SSL certificates sumala niana.

11. Sa sunod nga lakang makamugna og lig-on nga Diffie-Hellman cipher sa /etc/nginx/ssl/ directory aron mapanalipdan ang imong server batok sa Logjam attack pinaagi sa pagpadagan sa mosunod nga mga sugo.

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

12. Sa katapusan, i-restart ang Nginx daemon aron mapakita ang mga pagbag-o.

$ sudo systemctl restart nginx

ug sulayi ang imong SSL certificate pinaagi sa pagbisita sa ubos nga URL.

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

Lakang 4: Auto Renew Atong I-encrypt ang Nginx Certificates

13. Ang mga sertipiko nga gi-isyu sa Let's Encrypt CA balido sulod sa 90 ka adlaw. Aron ma-auto renew ang mga file sa dili pa ang expiration date paghimo og ssl-renew.sh bash script sa /usr/local/bin/ directory nga adunay mosunod nga sulod.

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

Idugang ang mosunod nga sulod sa 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

Ilisan ang --webroot-path variable aron mohaum sa imong Nginx document root. Siguroha nga ang script ma-executable pinaagi sa pag-isyu sa mosunod nga sugo.

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

14. Katapusan pagdugang ug cron nga trabaho aron ipadagan ang script matag duha ka bulan sa tungang gabii aron masiguro nga ang imong sertipiko ma-update sa gibana-bana nga 30 ka adlaw sa dili pa kini matapos.

$ sudo crontab -e

Idugang ang mosunod nga linya sa ubos sa file.

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

Mao na! Ang imong Nginx server karon nag-alagad sa SSL content gamit ang libre Let's Encrypt SSL certificate.