เทคนิคการติดตั้ง LetsEncrypt SSL บน Raspberry Pi

0
4051

เทคนิคการติดตั้ง free LetsEncrypt certificate บน Raspberry Pi +  3 B+

เทคนิคการติดตั้ง free LetsEncrypt SSL certificate บน Raspberry Pi 3 B+ ซึ่งวิธีนี้เราสามารถไปประยุคใช้กับพวก cloud server อย่าง Debian Ubuntu ได้เช่นกันหลังจากที่ผมใช้เวลาอยู่หลายปีเพื่อหาวิธีติดตั้ง free letencrypt ลงบน server แต่ก็ไม่ประสบณ์ความสำเร็จสักทีจนมาได้เจอกับ Raspberry Pi บอร์ดคอมพิวเตอร์ขนาดเล็กและได้ตัดสินใจซื้อมาศึกษาทำ web server ด้วยตัวเองเละเอาไว้ทดลองออกแบบเวปไชต์และเอาไว้หัดเขียนโค้ดโปรแกรมยามว่างจากผัดกับข้าวและเป็นการฝึกสมองไปในตัวเรามาเริ่มติดตั้ง Letsencrypt กันเลย

ก่อนจะติดตั้ง LetsEncrypt บน Raspberry Pi เราต้องทำการอัพเดท Raspberry Pi ของเราก่อนด้วยคำสั่ง

sudo apt-get update sudo apt-get upgrade

 

เมื่ออัพเดท Raspberry Pi เสร็จแล้วเราก็จะเริ่มทำการติดตั้ง LetsEncrypt software บน Raspberry Pi ซึ่งตัว software ที่เราจะติดตั้งนี้ชื่อว่า “Certbot” ถ้าเราลง Apache บน Raspberry pi ให้ติดตั้ง Certbot module แต่ถ้าลง Nginx หรืออย่างอื่นให้ติดตั้ง Certbot รุ่น Standard

เริ่มติดตั้ง Certbot ด้วยคำสั่ง command

Apache

sudo apt-get install python-certbot-apache

 

Nginx หรืออย่างอื่น

sudo apt-get install certbot

 

เมื่อติดตั้ง Certbot เสร็จเรียบร้อยแล้วเราก็จะสามารถติดตั้งใบ certificate จาก Letsencrypt ให้ Raspberry Pi ของเราได้โดยใช้วิธีดังนี้
ถ้าเราลง Apache บน Raspberry Pi ให้ใช้คำสั่งด้านล่างนี้ซึ่งมันจะติดตั้ง certificate ให้อัติโนมัติไปที่ Apache’s configuration ให้เลย
แต่ก่อนที่เราจะติดตั้งใบcertificat จาก LetsEncrypt ได้นั้นต้องแน่ใจว่าเร้าเตอร์ของเราได้ทำการเปิด port 80 และ port 443 แล้วหรือยังและ LetsEncrypt จะติดตั้งได้เฉพาะเวปที่มีโดเมนแล้วเท่านั้นจะติดตั้งบน Localhost ไม่ได้

ติดตั้ง LetsEncrypt บน Apache ด้วยคำสั่ง

certbot –apache

 

เทคนิคการติดตั้ง free LetsEncrypt SSL certificate ถ้าเราใช้ Nginx หรืออย่างอื่นทำ server ก็สามารถทำได้ 2 วิธีคือ ใช้คำสั่ง

1.ใช้ Utilizing standalone built-in web server ซึ่งวิธีนี้จะง่ายมากเพราะตัว sorfware จะติดตั้ง configuration file ให้อัติโนมัติแต่ต้องมั่นใจว่าได้เปิด port80 ในเราเตอร์ไว้และเปลี่ยน example.com เป็นชื่อเวปโดเมนของเรา

certbot certonly –standalone -d example.com -d www.example.com

 

2.ใช้วิธี web root วิธีนี้จะใช้เทคนิคความสามารถเพิ่มมากกว่าใช้วิธี built-in web server นิดหน่อยวิธีนี้เราจะต้องมั่นใจว่า root folder เราใน /var/www/example.com มันชี้ไปที่ directory website ที่เราต้องการติดตั้ง certificate ถูกต้องหรือเปล่า และเปลี่ยน example.com เป็นชื่อเวปโดเมนของเรา ซึ่งวิธีนี้เหมาะสำหรับการที่เราทำเวปหลายๆเวปใน server เดียว พิมพ์คำสั่งลงไปใน Terminal Raspberry Pi ด้วยคำสั่ง ด้านล่าง อย่าลืมใส่ชื่อดโเมนเนมเวปไชต์ของเราแทน example.com และต้องดูให้ดีว่าเราใส่ directory folder ถูกต้องหรือเปล่าไม่งั้นก็จะติดตั้ง Letsencrypt ไม่ผ่าน

certbot certonly –webroot -w /var/www/example.com -d example.com -d www.example.com

 

หลังจากใส่คำสั่ง commands line นั้นลงไปเขาก็จะให้เรากรอก Email address เพื่อที่ทาง Letsencrypt จะได้ส่งแจ้งเตือนเผื่อกรณีเกิดเหตุขัดข้องของใบ certificate หรือแจ้งเตือนการหมดอายุของใบ certificate ซึ่งจะหมดอายุทุกๆ 3 เดือน เมื่อคุณกรอกรายละเอียดครบตามที่ทาง Letsencrypt ต้องการแล้วเราก็จะต้องเอา Code คำสั่งไปวางไว้ใน server ของเราซึ่ง certificate จะถูกเก็บไว้ที่ Folder

/etc/letsencryp/live/example.com/

 

เราสามารถหา full chain file ( fullchian.pem) และ certificate’s private key ได้จากในนี้ซึ่ง folder นี้เราต้องเก็บรักษาให้ดีอย่าให้บุคลลภายนอกเข้าถึงได้เพื่อป้องกันการถูกแฮ็คเวป

 

เทคนิคการติดตั้ง Letsencrypt SSl บน NGINX server

เริ่มต้นด้วยการเปิดไฟล์ไดเรคทอรี่ที่เราสร้างขึ้นมาด้วยคำสั่ง

sudo nano /etc/nginx/sites-available/

 

เมื่อไฟล์เปิดขึ้นมาเราก็จะเจอ server code block ของเราดังโค้ดข้างล่างนี้

server {
listen 80 default_server;
listen [::]:80 default_server;root /usr/share/nginx/html;
index index.html index.htm;server_name example.com;location / {
try_files $uri $uri/ =404;
}
}เราจะทำการเปลี่ยนโค้ดบางส่วนเพื่อติดตั้ง Letsencrypt กัน

หาบรรทัดนี้

listen [::]:80 default_server

 

ใส่โค้ดนี้ที่ด้านล่าง

listen 443 ssl;

 

การที่เราใส่โค้ดนี้ก็เพื่อให้ Nginx server รับค่าที่ port 443 ซึ่ง port นี้จะรองรับการใช้ HTTPS/SSL เมื่อมีคนเข้าเวปportนี้ก็จะเชื่อมต่อ HTTPS ทันที

หาบรรทัดนี้

server_name example.com;

 

ใส่โค้ดนี้ที่ด้านล่างอย่าลืมเปลี่ยน example.com เป็นชื่อโดเมนเวปของเรา

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

 

ซึ่งโค้ดบรรทัดนี้จะเป็นตัวนำทางให้ nginx server ของเราวิ่งไปหาใบรับรองได้ถูกว่าต้องไปหาใบรับรอง SSL ได้ที่ใหนเพื่อตั้งค่าการเชื่อมต่อแบบ HTTPS/SSL
ตัว Private key ตัวนี้จะเป็นตัวเชื่อมต่อ SSL บน server ของเราซึ่งจะมีเฉพาะ server ของเราเท่านั้นที่อ่านและดูไฟลนี้ได้ ควรจะเก็บรักษาไฟล์นี้ให้ดีอย่างปลอดภัย
Fullchain key จะเก็บข้อมูลทั้งหมดที่ server เรามีเวลาเชื่อมต่อผ่าน HTTPS ที่ได้รับการรับรองตามกฏหมาย
เมื่อเราจัดการใส่โค้ดเรียบร้อยใน server ของเราโค้ดจะออกมาหน้าตาดังข้างล่างนี้เมื่อเรามั่นใจว่าโค้ดเราถูกต้องครบถ้วนก็สามารถกดเซฟด้วยคำสั่ง Ctrl+y และก็กด ENTER เพื่อเซฟ

server {
listen 80 default_server;
listen [::]:80 default_serverlisten 443 ssl;root /usr/share/nginx/html;
index index.html index.htm;server_name example.com;ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;location / {
try_files $uri $uri/ =404;
}
}อาจจะดูเหมือนยากนิดหน่อยสำหรับการติดตั้ง Letsencrypt บน server ของเราเองอาจจะไม่เหมือนกับการใช Host server สำเร็จรูปอย่าง siteground ที่มี letsencrypt ให้ใช้ฟรีๆ