Install Secure Nginx on Ubuntu 16.04 with Let's Encrypt
ทดสอบบน Ubuntu 16.04
1. ติดตั้ง package letsencrypt
2. ติดตั้งโดยใช้รูปแบบ webroot plugin การทำงานจะอยู่ใน /.well-known ของ document root ให้ทำการแก้ไขไฟล์ /etc/nginx/sites-available/default
7. Auto Renewal เนื่องจาก Let’s Encrypt certificates จะมีอายุการใช้งานเพียง 90 วัน ทดสอบการทำงานคำสั่ง renew
1. ติดตั้ง package letsencrypt
- sudo apt-get install letsencrypt
2. ติดตั้งโดยใช้รูปแบบ webroot plugin การทำงานจะอยู่ใน /.well-known ของ document root ให้ทำการแก้ไขไฟล์ /etc/nginx/sites-available/default
- sudo nano /etc/nginx/sites-available/default
location ~ /.well-known {
allow all;
}
3. สมมุติว่า webroot เป็น /var/www/html ติดตั้งแบบ certonly ด้วยคำสั่ง
- sudo service nginx restart
4. Generate Strong Diffie-Hellman Group
- sudo letsencrypt certonly --webroot -w /var/www/html -d example.com
5. ตรวจสอบไฟล์ certificates
- sudo openssl dhparam -out /etc/letsencrypt/live/example.com/dhparam.pem 2048
- sudo ls -l /etc/letsencrypt/live/example.com
lrwxrwxrwx 1 root root 42 Oct 10 12:55 cert.pem -> ../../archive/example.com/cert1.pem lrwxrwxrwx 1 root root 43 Oct 10 12:55 chain.pem -> ../../archive/example.com/chain1.pem -rw-r--r-- 1 root root 769 Oct 10 13:43 dhparam.pem lrwxrwxrwx 1 root root 47 Oct 10 12:55 fullchain.pem -> ../../archive/example.com/fullchain1.pem lrwxrwxrwx 1 root root 45 Oct 10 12:55 privkey.pem -> ../../archive/example.com/privkey1.pem
6. ปรับแต่งไฟล์ Configuration SSL บน nginx
- sudo nano /etc/nginx/sites-available/default
server { listen 80; server_name example.com; if ($scheme = http) { return 301 https://example.com$request_uri; } }
server { listen 443; server_name example.com; ssl on; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; # generate dhparams.pem: openssl dhparam -out dhparam.pem 4096 ssl_dhparam /etc/letsencrypt/live/example.com/dhparam.pem; location / { } }
8. ต่อมาเราต้องการให้ letsencrypt renew ก่อนที่ certificates จะหมดอายุ โดยผมจะเขียน script แล้วสั่งให้ cron ทำงานทุกสิ้นเดือน
- sudo letsencrypt renew --dry-run --agree-tos
- sudo nano /etc/cron.monthly/letsencrypt
#!/usr/bin/env bash
/usr/bin/letsencrypt renew
&& service nginx reload
- sudo chmod u=rwx,go=rx /etc/cron.monthly/letsencrypt
- sudo service cron restart
ความคิดเห็น