How to generate TLS certificates สำหรับ OpenVPN
TLS หรือ Transport Layer Security เป็นโปรโตคอลการเข้ารหัสที่ใช้ในการรักษาความปลอดภัยในการสื่อสารผ่านเครือข่ายคอมพิวเตอร์ที่ใช้กันอย่างแพร่หลาย โดยมีวัตถุประสงค์หลักเพื่อรักษาความเป็นส่วนตัวและความสมบูรณ์ของข้อมูลที่สื่อสารกันระหว่างสอง Applications
OpenVPN ก็เป็น Application หนึ่งทีนิยมใช้ TLS ในการรักษาความปลอดภัยในการเชื่อมต่อ โดยการเลือกใช้ Autentication แบบ TLS นั้นต้องใช้ใบรับรอง (certificates) และคีย์ (keys) หลายรายการสำหรับการตรวจสอบสิทธิ์
TLS certificates และ keys ที่ต้องใช้
ฝั่ง VPN Server ต้องใช้
The root certificate file (Certificate Authority)
Server certificate
Server key
Diffie Hellman Parameters
ฝั่ง OpenVPN client ต้องใช้
The root certificate file (Certificate Authority)
Client certificate
Client key
บทความนี้เป็นคู่มือแนะนำวิธีสร้าง TLS certificates และ keys เพื่อใช้ในการเชื่อมต่อ OpenVPN ทั้งฝั่ง Server และ Client สำหรับผู้ใช้ระบบปฏิบัติการ Windows
ขั้นตอนที่ 1: ติดตั้ง OpenVPN software
- Download OpenVPN software >>Download<<
- Run File ที่ Downolad มา เลือก Setup type เป็น Customize
![การสร้าง OpenVPN TLS certificate 1 Setup OpenVPN](https://iiot.riverplus.com/wp-content/uploads/2021/10/VPN-Customize.png)
3. เมื่อเข้าถึงหน้า Custom Installation เลื่อนหา OpenSSL Utilities → EasyRSA 3 Certificate Management Scripts เลือก Will be installed on local hard drive และกด Install Now
![การสร้าง OpenVPN TLS certificate 2 OpenVPN Install](https://iiot.riverplus.com/wp-content/uploads/2021/10/VPN-Customize-Install2.png)
ขั้นตอนที่ 2: มาสร้าง TLS certificates และ keys กันเลย
เราจะใช้แอปพลิเคชัน EasyRSA 3 ที่ติดตั้งพร้อมกับ OpenVPN ในขั้นตอนที่ 1 ในการสร้าง certificates และ keys โดยต้องใช้ Windows Command Prompt ในการพิมพ์คำสั่ง EasyRSA
- เปิด Windows Command Prompt ด้วยสิทธิ์ Administrator ด้วยการพิมพ์ cmd ลงใน Windows search bar (Windows button + S) แล้ว Click ขวา เลือก Run as administrator
![การสร้าง OpenVPN TLS certificate 3 Run cmd](https://iiot.riverplus.com/wp-content/uploads/2021/10/Run-cmd.png)
เริ่มพิมพ์ Command ดังนี้
- เปลี่ยน directory ปัจจุบันไปเป็นโฟลเดอร์ EasyRSA โดยใช้คำสั่ง
cd "C:\Program Files\OpenVPN\easy-rsa"
(ตาม Path ที่เราติดตั้ง OpenVPN ในขั้นตอนที่ 1)
- เปิด EasyRSA โดยใช้คำสั่ง
EasyRSA-Start.bat
จะเข้าสู่หน้าต่างดังภาพ
![การสร้าง OpenVPN TLS certificate 4 EasyRSA](https://iiot.riverplus.com/wp-content/uploads/2021/10/EasyRSA-1024x582.png)
- Initialize directory Public Key Infrastructure (PKI) โดยคำสั่ง
./easyrsa init-pki
เมื่อ run คำสั่ง หน้าต่างจะแจ้ง Warning ลบไฟล์ ให้ตอบ yes
![การสร้าง OpenVPN TLS certificate 5 EasyRSA Warning](https://iiot.riverplus.com/wp-content/uploads/2021/10/EasyRSA-Warning.png)
เพื่อเตรียม directory ให้พร้อมสำหรับการสร้างไฟล์ หากเข้าดูจาก File Explorer หลังใช้คำสั่ง Initialize ไฟล์ใน folder จะมีดังภาพ
![การสร้าง OpenVPN TLS certificate 6 File Explorer](https://iiot.riverplus.com/wp-content/uploads/2021/10/File-Explorer-1024x845.png)
เปิด vars.bat ไฟล์ด้วย Notepad เพื่อแก้ไขข้อความด้วยคำสั่ง
notepad vars.bat
![การสร้าง OpenVPN TLS certificate 7 notepad vars.bat](https://iiot.riverplus.com/wp-content/uploads/2021/10/var_bat-1024x592.png)
นี่คือไฟล์ template ที่ใช้ในการ generating certificates ข้อมูลที่เก็บไว้ที่นี่จะถูกใช้เป็นค่าเริ่มต้นในการสร้าง certificate สามารถแก้ไขข้อความหลัง = ในแต่ละบรรทัดได้ตามความต้องการ จากนั้นกด Save ในหน้าต่าง Notepad แล้วปิด Notepad ไป
- กำหนดขนาดคีย์สำหรับ Diffie Hellman parameters ด้วยคำสั่ง
set DH_KEY_SIZE=2048
- ตรวจสอบข้อมูลที่คุณบันทึกในไพล์ var.bat ด้วยคำสั่ง
vars.bat
ข้อมูลที่แสดงตรงกับที่บันทึก
![การสร้าง OpenVPN TLS certificate 8 Var](https://iiot.riverplus.com/wp-content/uploads/2021/10/Var.png)
- หลังจากนั้น Run Command
./easyrsa clean-all
แสดง Warning ลบไฟล์ ให้ตอบ yes
- เริ่มสร้าง certificates และ keys โดยสร้าง certificate authority (CA) ซึ่งเป็นไฟล์หลักก่อนด้วยคำสั่ง
./easyrsa build-ca nopass
หลังจากนั้นใส่ชื่อ Server Name ของคุณ
![การสร้าง OpenVPN TLS certificate 9 Server Name](https://iiot.riverplus.com/wp-content/uploads/2021/10/ServerName-1024x583.png)
- ต่อไปสร้าง server certificate และ key ด้วยคำสั่ง
./easyrsa build-server-full server nopass
- และสร้าง clients certificates และ keys ด้วยคำสั่ง
./easyrsa build-client-full Client1 nopass
เปลี่ยน Client1 เป็น client’s Common Name (CN) ที่คุณต้องการ หาก VPN System ของคุณมี VPN Client หลาย Site ให้ Run คำสั่งเดิม และ เปลี่ยน client’s Common Name (CN) ไปเรื่อยๆ ให้ครบตามจำนวน Client Site
- และสุดท้าย Generate Diffie Hellman parameters ด้วยคำสั่ง
./easyrsa gen-dh
หลังจากที่สร้างไฟล์ทั้งหมดเสร็จสิ้น เราจะได้ TLS Ccertificates และ Keysทั้งหมดที่จำเป็นต้องใช้ในการสร้างการเชื่อมต่อ OpenVPN โดยไฟล์ต่างๆ จะไปอยู่ตาม Directories ดังนี้
![การสร้าง OpenVPN TLS certificate 10 File Path](https://iiot.riverplus.com/wp-content/uploads/2021/10/File-Path.jpg)
สามารถเข้าไป Copy ไฟล์ต่างๆ มาใช้ได้ในขั้นตอนการสร้าง VPN เพื่อการเชื่อมต่อค่ะ
![การสร้าง OpenVPN TLS certificate 11 Cetificate Key](https://iiot.riverplus.com/wp-content/uploads/2021/10/Cetificate-Key-1024x845.png)