มาติดตั้ง/ต่ออายุ(อัตโนมัติ) SSL (https) ของ Let’s encrypt free https กันดีกว่า

Supayut Raksuk
CODIUM
Published in
2 min readMay 13, 2018

--

ก่อนอื่นต้องออกตัวก่อนว่า นี่เป็นบทความแรก ถ้าผิดพลาดตรงไหนก็ขออภัยไว้ ณ ที่นี้ ด้วย ตั้งใจว่า เราพบเจออะไรในชีวิตประจำวันก็อยากจะมาแชร์และเก็บไว้อ่านเองมากกว่า

เอาล่ะครับ ได้เวลาเริ่มกันแล้ว !!!

สำหรับบทความนี้ ผมคงไม่อธิบายนะครับว่า Let’s encrypt คืออะไร

ก่อนอื่นเลยนะครับ ถ้าเปิด nginx(พอดีผมใช้ nginx ไม่รู้ว่า ตัวอื่นเป็นยังไงนะครับ แต่เดาว่าต้องปิดพวก port 80 บลาๆ อ่ะครับ) อยู่ก็ปิดมันเสียก่อนนะครับแล้วค่อยติดตั้ง

$ sudo add-apt-repository ppa:certbot/certbot$ sudo apt update$ sudo apt install certbot

2. เสร็จแล้วก็ ใส่ certificates ได้เลย อย่าลืมเปลี่ยน youremail กับ yourdomain ด้วยนะครับ

$ letsencrypt certonly --standalone --renew-by-default --email youremail -d yourdomain

ตัวอย่างก็จะเป็นอะไรประมาณนี้

ตรง -d นี่เราจะเพิ่ม ไป 2 อันแบบ ตัวอย่างนี้ก็ย่อมได้นะขอรับ

เสร็จแล้วครับ เราก็จะได้ output หน้าตาบ้านๆ อะไรประมาณนี้

สังเกตุไหมว่า มันจะหมดอายุ 2018–08–11

แล้วถ้าเราอยากให้มัน ต่ออายุ เองล่ะ? ทำไงดี

วิธีของผมก็คือ ใช้ crontab สำหรับรายละเอียดการใช้ crontab ยังไง ลองไปศึกษากันดูนะครับในที่นี้จะไม่ได้ลงลึกอะไร

ต้องบอกก่อนว่า การที่เราจะ ต่ออายุมันได้เนี่ย มันต้องปิด พวก nginx อะไรพวกนั้นด้วย เหมือนตอน จะ ขอ certificates นั่นล่ะครับ เราจึงต้องเขียน script กันเล็กๆน้อยๆนะครับ อาจมีวิธีอื่นที่ดีกว่านะครับ แนะนำกันมาได้

ก่อนอื่นเลย ผมก็สั่ง สร้าง script ขึ้นมาครับ ผมสร้างไว้ใน root เลยเนอะ

$ vim /root/renew_letenscrypt.sh

ใครถนัดใช้ nano หรือ text editor ตัวอื่นก็เลือกเอานะครับ พอดีผมถนัด vim หน้าตาก็จะประมาณ ข้างล่างนี้ เดี๋ยวอธิบายให้ฟังนะครับ ทีละบรรทัด

#!/bin/sh/usr/local/bin/docker-compose -f /root/docker-compose-dev.yml down
/usr/bin/certbot renew --force-renewal
/usr/local/bin/docker-compose -f /root/docker-compose-dev.yml up -d nginx

เสร็จแล้วก็ เซฟ เลยนะครับ แล้วก็ ใช้คำสั่งนี้ อีกนิดนึงนะครับ

$ chmod +x /root/renew_letenscrypt.sh

อธิบายกันนิดนึงนะครับ

  • #!/bin/sh ← บรรทัดนี้ไม่มีอะไรครับ copy ไปเลย
  • docker-compose -f docker-compose-dev.yml down ← อันนี้ต้องเปลี่ยนนะ ในที่นี้เป็น คำสั่งของผมเอง ในการสั่งให้ ปิด container ที่ run nginx อยู่ สำหรับ ทั่วๆไป ก็น่าจะใช้ คำสั่ง ประมาณ service nginx stop ประมาณนี้นะครับ
  • certbot renew — force-renewal ← ตรงนี้ ตามนั้นเลยครับ copy ไปใช้เลย พระเอกของเราครับ สั่งให้มันต่ออายุ
  • docker-compose -f docker-compose-dev.yml up -d nginx ← บรรทัดนี้ก็คือ สั่งเปิด nginx นั่นแหละครับ คนที่ใช้แบบ ปกติ ก็คงเป็นประมาณ service nginx start ก็ไปแก้กันตามสะดวกนะครับ

หลังจากนั้น มาเปิด ก็ เปิด crontab ขึ้นมานะครับ

$ crontab -e

ครั้งแรก มันจะให้เลือกว่าจะ ใช้ editor ตัวไหนก็เลือก เอาที่สะดวกนะครับ

แล้วใส่ คำสั่ง นี้ลงไปนะครับ แล้วเซฟ เลยยย !!

@monthly /root/renew_letencrypt.sh

เสร็จแล้ว เย่ !!! หลังจากนี้ ทุกๆเดือน มันก็จะ ไป run คำสั่งใน scripts ที่เราเขียนไว้โดยอัตโนมัติ เลยล่ะค้าบบบบ

สุดท้ายก็หวังว่าบทความนี้จะเป็นประโยชน์บ้างไม่มากก็น้อยนะครับ ไว้มีโอกาสจะมาเขียนอะไรให้อ่านอีกนะครับ

--

--

Supayut Raksuk
CODIUM

(@nookskill) I'm a software developer, musician, song writer from Thailand supayut.com