การติดตั้ง SSL บน web
server อย่างถูกต้อง
ด้วยบริการ SSL certificate ฟรีจาก Let's Encrypt
ด้วยบริการ SSL certificate ฟรีจาก Let's Encrypt
การให้บริการ web
ที่ปลอดภัยจะต้องมีการเข้ารหัส (https) จะต้องมี
SSL certificate โดย
SSL Certificate ก็คือ ใบรับรองอิเล็กทรอนิกส์
เป็นไฟล์ข้อมูลขนาดเล็ก ที่ได้มีการผูกไว้กับ Private Key ของเครื่องเซิร์ฟเวอร์
เพื่อยืนยันตัวตนและความถูกต้องในการส่งข้อมูลระหว่างเครื่องเซิร์ฟเวอร์กับเว็บเบราว์เซอร์หรือ
Application ที่ใช้งาน มีการเข้ารหัสและถอดรหัสผ่านเทคโนโลยี
SSL/TLS หากข้อมูลของท่านถูกดักจับไปได้
ข้อมูลก็ท่านก็ยังมีความปลอดภัย เพราะแฮกเกอร์จะไม่สามารถถอดรหัสข้อมูลของคุณได้ เนื่องจากข้อมูลที่ได้ไปจะอยู่ในรูปแบบที่อ่านไม่ออกจะต้องมีคีย์ถอดรหัสที่เหมาะสมและตรงกันเท่านั้น
ถึงจะสามารถถอดรหัสได้
โดย SSL Certificate ที่ใช้จะต้องออกจากผู้รับรองที่น่าเชื่อถือได้ซึ่งมีค่าใช้จ่าย
แต่บทความนี้จะแนะนำการใช้บริการโดย Let's Encrypt ซึ่งเป็นผู้ออกไปรับรอง
SSL certificate ที่ใช้งานได้โดยไม่เสียค่าใช้จ่ายและใช้ระบบอัตโนมัติในการจัดการใบรับรองความปลอดภัยสำหรับเว็บไซต์เข้ารหัส
โดยเราจะใช้งานผ่าน client ที่มีให้
แต่ใบรับรองจะมีอายุเพียง 90 วัน
แต่ยังมีข้อดีคือช่วยลดความเสียหายที่จะเกิดขึ้นหากกุญแจที่ใช้ยืนยันใบรับรองถูกเข้าถึงโดยผู้ไม่ประสงค์ดี
กุญแจที่ถูกขโมยไปจะสามารถใช้ได้เพียงในช่วงระยะเวลาสั้นๆเท่านั้น
การขอใบรับรองจาก Let's
Encrypt จะมีกระบวนการยืนยันโดเมนดังนี้
กระบวนการขอใบรับรองจะจัดการผ่านโปรโตคอลที่เรียกว่า Automated
Certificate Management Environment (ACME) โดยโปรโตคอลนี้สร้างขึ้นมาเพื่อที่จะทำให้กระบวนการยืนยันโดเมน
(Domain Validation) กระทำได้อย่างอัตโนมัติโดยไม่ต้องมีมนุษย์เข้าไปเกี่ยวข้องเลย โดยผู้ใช้ต้องระบุอีเมลและโดเมนที่ต้องการลงไป
โดยอีเมลนั้นจะถูกนำไปใช้เป็นบัญชีผู้ใช้สำหรับ ACME server ด้วย
กระบวนการยืนยันโดเมนที่ ACME ใช้จะเรียกว่า Domain
Validation with Server Name Indication (DVSNI) การทำงานคร่าวๆจะเป็นดังนี้
ACME server จะขอให้ client สร้างใบรับรองตนเองที่มีข้อมูลจาก
server ตนเอง เสร็จแล้ว ACME server จะเชื่อมต่อเข้ามาและตรวจสอบใบรับรอง
ถ้าถูกต้องกระบวนการยืนยันโดเมนก็จะเสร็จสมบูรณ์
การขอใบรับรองนั้นแบ่งได้เป็นสองแบบ
1. ขอใบรับรองและติดตั้งอัตโนมัติ จะต้องใช้ apache
หรือ nginx โดย LE's client นั้นจะทำการใช้ HTTP server ที่ตั้งค่าไว้ทำการยืนยันโดเมนเพื่อขอใบรับรองรวมถึงติดตั้งให้กับ
HTTP server ที่เปิดอยู่ในทันที
2. ขอใบรับรองเพียงอย่างเดียว
วิธีนี้จะได้ใบรับรองมาเพื่อนำไปติดตั้งด้วยตนเอง โดยจะทำได้ 3 แบบ คือ manual
สร้าง server ขึ้นมาเองโดยผู้ใช้,
standalone สร้าง server ขึ้นมาใหม่โดย LE's
client และ webroot เป็นการใช้ server ที่เปิดไว้อยู่แล้ว
โดยบทความนี้จะแนะนำการขอใบรับรองแบบที่หนึ่ง คือ ขอใบรับรองและติดตั้งโดยอัตโนมัติ บน web server อย่างถูกต้อง
ด้วยบริการ SSL certificate ฟรีจาก Let's Encrypt โดยใช้ web
server Apache บน Ubuntu มีขั้นตอนดังนี้
1. การติดตั้งเว็บเซิร์ฟเวอร์ Apache บน
Ubuntu 18.04 LTS
บทความนี้จะใช้เซิร์ฟเวอร์ Ubuntu 18.04 LTS โดยจะต้องติดตั้งเว็บเซิร์ฟเวอร์ Apache เพื่อให้สามารถเข้าใช้งานหน้าเว็บได้ จะมีขั้นตอนดังต่อไปนี้
บทความนี้จะใช้เซิร์ฟเวอร์ Ubuntu 18.04 LTS โดยจะต้องติดตั้งเว็บเซิร์ฟเวอร์ Apache เพื่อให้สามารถเข้าใช้งานหน้าเว็บได้ จะมีขั้นตอนดังต่อไปนี้
ขั้นตอนที่ 1 – การติดตั้งเว็บเซิร์ฟเวอร์
Apache
- ใช้คำสั่งดังนี้เพื่ออัปเดตแพ็คเกจของเรา :
- ใช้คำสั่งดังนี้เพื่อติดตั้งแพ็คเกจ apache 2 :
ขั้นตอนที่
2 – ตรวจสอบเว็บเซิร์ฟเวอร์ของเรา
ให้ตรวจสอบการเข้าถึงหน้าเริ่มต้นของ
Apache เพื่อยืนยันว่าซอฟต์แวร์ที่เราได้ติดตั้งมีการทำงานอย่างถูกต้องหรือไม่ โดยเข้าผ่าน IP :
ถ้าซอฟต์แวร์ทำงานปกติจะเห็นหน้าเว็บ Apache เริ่มต้นของ Ubuntu 18.04 แต่จะแสดงเว็บไซต์ไม่ปลอดภัย
ขั้นตอนการติดตั้งเว็บเซิร์ฟเวอร์ Apache ได้เสร็จแล้วต่อไปจะเป็นขั้นตอนการขอและติดตั้ง SSL certificate จาก Let's Encrypt โดยจะมีขั้นตอนดังต่อไปนี้
2.การขอและติดตั้ง SSL certificate
2.การขอและติดตั้ง SSL certificate
ขั้นตอนที่ 1
–
การติดตั้งเครื่องมือที่ใช้สำหรับการขอใช้งาน
Let's Encrypt
certificate คือ certbot
การใช้ certbot นับว่าเป็นวิธีที่ง่ายที่สุดเป็นเครื่องมือที่ใช้ในการขอใบรับรองและติดตั้งโดยอัตโนมัติ
การใช้ certbot นับว่าเป็นวิธีที่ง่ายที่สุดเป็นเครื่องมือที่ใช้ในการขอใบรับรองและติดตั้งโดยอัตโนมัติ
การติดตั้ง certbot
จะมีวิธีการที่แตกต่างกันตามซอฟต์แวร์และระบบ โดยวิธีการนี้จะใช้
Apache บน Ubuntu 18.04
LTS ให้ใช้คำสั่งดังนี้
- ใช้คำสั่งดังนี้เพื่อเพิ่ม Certbot PPA
- ใช้คำสั่งดังนี้เพื่อติดตั้ง Certbot
ขั้นตอนที่ 2 – การแก้ไขไฟล์
virtual host
ไฟล์ virtual host คือ ไฟล์ที่ระบุการกำหนด virtual host ของเราและกำหนดวิธีที่
Apache จะตอบสนองต่อคำขอโดเมนต่างๆ โดยไฟล์ 000-default.conf
จะมีมาพร้อมกับ apache
-
สามารถดูไฟล์ได้จากคำสั่งดังนี้ :
- ให้แก้ไขไฟล์
virtual
host โดยใช้คำสั่ง
nano เพื่อเข้าไปแก้ไข
โดยจะต้องแก้ไขข้อมูลดังนี้
- ServerAdmin คือ email ของ admin เพื่อให้ผู้ดูแลสามารถรับอีเมลได้
- ServerName คือ ชื่อโดเมนของเรา เพื่อให้โดเมนของเราถูกต้องนำไปใช้ในการขอใบรับรอง
- DocumentRoot คือ ที่เก็บไฟล์ เพื่อให้สามารถเข้าถึงไดเรกทอรี่ที่ถูกต้อง โดยบทความนี้จะมีไดเรกทอรี่ที่ /var/www/html
โดยไฟล์ virtual
host ควรจะมีลักษณะดังรูป
โดยบทความนี้จะมีแค่หนึ่งโดเมนถ้าผู้ใช้คนใดต้องการมีหลายโดนเมนสามารถทำการคัดลอกไฟล์นี้และแก้ไขข้อมูล โดยใช้คำสั่งดังต่อไปนี้ :
ขั้นตอนที่
3 - ใช้ certbot ในการขอ certificate
รับและติดตั้งใบรับรอง ซึ่งโดเมนเว็บไซต์ที่ขอจะต้องเปิดให้บริการจริงและสามารถใช้งานได้จากอินเทอร์เน็ตได้เรียบร้อยแล้วเพื่อที่ทาง
Let's Encrypt จะใช้ยืนยันความเป็นเจ้าของเว็บไซต์ได้ ให้ใช้คำสั่งได้ดังนี้ :
sudo cp /etc/apache2/sites-available/000-default.conf
/etc/apache2/sites-available/ชื่อไฟล์ของคุณหรือโดเมน.conf
เมื่อใช้คำสั่งนี้แล้ว certbot จะเริ่มทำงานและจะมีขั้นตอนในการขอ certificate ดังนี้
- จะสอบถาม email address สำหรับการต่ออายุและประกาศความปลอดภัย
- การอ่านข้อกำหนดต่างๆ
และยอมรับข้อตกลงหรือไม่
- การสอบถามถึงความต้องการของคุณที่จะแบ่งปัน
email address ของคุณให้แก่ Let's Encrypt
โดย Let's Encrypt
จะส่งอีเมลเกี่ยวกับงานต่างๆ ให้กับคุณ
- สอบถามชื่อที่จะเปิดใช้งาน
https หรือชื่อโดเมนของเรา
โดยชื่อโดเมนจะเป็นชื่อโดเมนที่เราได้ใส่ในไฟล์ virtual host
โดยชื่อโดเมนจะเป็นชื่อโดเมนที่เราได้ใส่ในไฟล์ virtual host
- การระบุว่า
ต้องการจะทำให้ certbot เข้าไปเปลี่ยนการตั้งค่าใน Apache
บังคับให้เว็บไซต์จะต้องถูกเปลี่ยนเส้นทางทุกการร้องขอจาก http
ไปที่โหมดความปลอดภัย (https) ที่ใช้กับใบรับรองที่เพิ่งออกเสมอหรือไม่
ถ้าเลือกทางที่ 2 นับจากนี้การเข้าเว็บไซต์ของเราก็จะเป็นแบบปลอดภัยโดยอัตโนมัติ
- จะเป็นการสรุปว่าได้ทำเสร็จแล้วและบอกที่เก็บใบรับรองของเรา
- ใบรับรองจะถูกดาวน์โหลดและติดตั้งแล้ว เว็บไซต์ของเราจะเป็น https ให้โดยอัตโนมัติและสามารถตรวจสอบใบรับรองที่ร้องขอได้ที่
- ใบรับรองจะถูกดาวน์โหลดและติดตั้งแล้ว เว็บไซต์ของเราจะเป็น https ให้โดยอัตโนมัติและสามารถตรวจสอบใบรับรองที่ร้องขอได้ที่
- Certbot จะเข้าไปแก้ไขไฟล์เพื่อให้ใช้งานใบรับรองได้ คือ /etc/apache2/sites-enabled/000-default.conf
แก้ในส่วน https redirect และ ไฟล์ 000-default-le-ssl.conf
ใน folder เดียวกันถูกสร้างเพิ่มขึ้นมารองรับระบบ
virtual host SSL และ Certificate file ต่างๆ ซึ่งมีความสัมพันธ์กับ virtual host ใน 000-default.conf
เมื่อเราได้ทำการขอและติดตั้ง SSL
certificate เสร็จแล้ว
ต่อไปจะเป็นการทดสอบการเข้าเว็บไซต์เพื่อทดสอบว่าสิ่งที่เราได้ทำมาสามารถใช้งานได้หรือไม่
ขั้นตอนที่
4 - ทดสอบการเข้าเว็บไซต์
เปิดเว็บเบราว์เซอร์และพิมพ์ชื่อโดเมนของเรา :
- จะเห็นได้ว่า เว็บไซต์ของเราจะมีความปลอดภัยโดยใช้ใบรับรองของ Let's
Encrypt ซึ่งได้รับความเชื่อถือจากทุก browser
1.ใบรับรองนี้ออกให้ใคร
2.ใบรับรองนี้ออกโดยใคร
3.วันที่ขอใบรับรองและวันที่หมดอายุ
รายเอียดอื่นๆสามารถดูได้จาก details
- เนื่องจาก Let’s Encryptre เป็น SSL แบบฟรี จึงมีอายุใช้งานเพียงแค่ 90 วัน เราจึงจำเป็นที่จะต้องต่ออายุใบรับรองใหม่ก่อนที่ใบรับรองจะหมดอายุโดยเราสามารถใช้
Client ของ Let’s Encrypt ที่มีฟังก์ชันนี้มาให้ด้วยอยู่แล้ว
ก่อนที่จะเราจะรันคำสั่งในการต่ออายุเราสามารถตรวจสอบวันหมดอายุของใบรับรองได้โดยคำสั่งดังนี้ :
sudo openssl x509 -enddate -noout -in
/etc/letsencrypt/live/ชื่อโดเมนของเรา/fullchain.pem
การต่ออายุใบรับรองของ Web
Server ที่ใช้ Apache สามารถใช้คำสั่งได้ดังนี้ :
/opt/letsencrypt/letsencrypt-auto certonly --apache
--keep-until-expiring -d ชื่อโดเมนของเรา
- สังเกต Parameter --keep-until-expiring โดยถ้าเราส่งParamter นี้เข้าไปด้วยตัว Client จะเช็คอายุของใบรับรองและจะต่ออายุให้ก็ต่อเมื่ออายุของใบรับรองต่ำกว่า
30 วัน โดยถ้าหากต้องการทดลอง Force ให้ตัว Client ต่ออายุใบรับรองให้เสมอเราสามารถใช้ Parameter --renew-by-default แทนได้และถ้าหากใบรับรองได้รับการต่ออายุแล้วจะมีข้อความขึ้นตามภาพด้านล่าง
.
.
.
.
.
.
.
.
.
แหล่งที่มา
1.ติดตั้ง Free SSL Certificate จาก Let's Encrypt ให้กับเว็บไซต์ - IKQ.ME
2.Let's Encrypt - CMU ITSC Network
3.Certbot - Ubuntubionic Apache
4.How To Install the Apache Web Server on Ubuntu 18.04 | DigitalOcean
5.SSL คืออะไร ทำไมต้องใช้ SSL - Netway
6.มารู้จัก Let's Encrypt กันเถอะ | Blognone
7.ติดตั้ง Free SSL Certificate จาก Let's Encrypt ให้กับเว็บไซต์ - IKQ.ME