EFF and SSL = <3


#1

ด้วยความที่ใช้ debian เป็นหลัก และก็ nginx ดังนั้นหมดนี่มันก็อิงตามนั้น อันนี้จะเป็นอีก service จากหลายๆ ส่วน Mozilla, Cisco, Akamai, the Electronic Frontier Foundation, IdenTrust and researchers at the University of Michigan ร่วมๆ กับให้ SSL กับทุกๆคน

Is there a catch? Yes, it’s only 3-month period certificate.

แต่ด่วยความที่มันไม่ยากในการขอ certificate, renew ก็เลยเรียกว่า มัน ok เลยทีเดียว และอย่าง StartSSL บางทีมันก็ขึ้น invalid ใน Chrome บ้าง ใน Firefox บ้าง ก็เลยหาทางเลือกบ้างก็ไม่เสียหาย

หลักๆ แล้วก็ต้องลง software เพื่อเก็บ certificate จาก Let’s encrypt ที่ Certbot แล้วก็ใช้ certificate นั้น // อย่างว่า เราอยู่ในโลกที่ package manager ครองโลกซะละ ใครก็เลือกทางที่ง่ายกว่า

  1. ลง certbot

     sudo apt-get install certbot -t jessie-backports
    

    updated 2017-08-01: https://certbot.eff.org/ มีรายละเอียดเรื่อง package manager ไว้ดีมาก เลือกๆ ได้เลย

  2. ตั้งค่าใน nginx เพื่อ verify domain ของเรา (อันนี้ทำให้ง่าย เพราะ certbot จะสร้าง file ใน webroot เพื่อ verify ว่าเราครอบครอง domain จริงรึเปล่า ก็เลยทำ root ของที่มันต้องการให้ซะเลยที่ /opt/letsencrypt

     location /.well-known/acme-challenge {
         root /opt/letsencrypt;
         break;
     }
    
  3. เก็บ certificate (อยากจะให้มันได้กี่ subdomain ก็ใส่ไปใน -d)

     certbot certonly --webroot -w /opt/letsencrypt -d example.com -d www.example.com
    
  4. ตั้งค่า nginx ให้รับ https แล้วใช้ SSL จาก certbot

     ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
     ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    
     ssl_ciphers ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM:!RC4;
     ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;  # don’t use SSLv3 ref: POODLE
    

เสร็จเรียบร้อยยย :slight_smile: เพราะถ้าลงจาก package manager มันจะ renew ใหม่เองเลยย แต่ถ้าอยากจะทดสอบว่า renew ได้จริงมั้ย ก็ลองได้โดย

certbot renew --dry-run

:hammer: ถ้าจะใช้แบบ CLI wizard ก็ลองดู มันถึงกับแก้ nginx.conf ให้เลยทีเดียว :exploding_head: ง่ายจนต้องร้องว่า ทำไมต้องสนใจอะไรด้านบนด้วย :unicorn: :rainbow_flag: :rainbow_flag:

sudo apt install python-certbot-nginx  

sudo certbot --nginx