ค้นหาเว็บไซต์

วิธีสร้างใบรับรอง SSL ที่ลงนามด้วยตนเองในเครื่องบน CentOS 8


SSL (Secure Socket Layer) และเวอร์ชันที่ได้รับการปรับปรุง TLS (Transport Socket Layer) เป็นโปรโตคอลความปลอดภัย ที่ใช้ในการรักษาความปลอดภัยการรับส่งข้อมูลเว็บที่ส่งจากเว็บเบราว์เซอร์ของลูกค้าไปยังเว็บเซิร์ฟเวอร์

ใบรับรอง SSL คือใบรับรองดิจิทัลที่สร้างช่องทางที่ปลอดภัยระหว่างเบราว์เซอร์ของไคลเอ็นต์และเว็บเซิร์ฟเวอร์ ในการทำเช่นนี้ ข้อมูลที่ละเอียดอ่อนและเป็นความลับ เช่น ข้อมูลบัตรเครดิต ข้อมูลการเข้าสู่ระบบ และข้อมูลส่วนตัวระดับสูงอื่นๆ จะถูกเข้ารหัส เพื่อป้องกันไม่ให้แฮกเกอร์ดักฟังและขโมยข้อมูลของคุณ

ใบรับรอง SSL ที่ลงนามด้วยตนเองคืออะไร

ใบรับรอง SSL ที่ลงนามด้วยตนเอง ซึ่งแตกต่างจากใบรับรอง SSL อื่นๆ ที่ลงนามและเชื่อถือได้โดย ผู้ออกใบรับรอง (CA) คือใบรับรองที่ลงนามโดย บุคคลที่เป็นเจ้าของมัน

สร้างได้ฟรีโดยสิ้นเชิงและเป็นวิธีที่ประหยัดในการเข้ารหัสเว็บเซิร์ฟเวอร์ที่โฮสต์ในเครื่องของคุณ อย่างไรก็ตาม ไม่แนะนำให้ใช้ใบรับรอง SSL ที่ลงนามด้วยตนเองในสภาพแวดล้อมการใช้งานจริงด้วยเหตุผลต่อไปนี้:

  1. เนื่องจากไม่ได้ลงนามโดย ผู้ออกใบรับรอง ใบรับรอง SSL ที่ลงนามด้วยตนเองจะสร้างการแจ้งเตือนบนเว็บเบราว์เซอร์เพื่อเตือนผู้ใช้ถึงความเสี่ยงที่อาจเกิดขึ้นในอนาคตหากพวกเขาตัดสินใจดำเนินการต่อ การแจ้งเตือนเหล่านี้ไม่พึงประสงค์และจะห้ามไม่ให้ผู้ใช้เยี่ยมชมเว็บไซต์ของคุณ ซึ่งอาจส่งผลให้การเข้าชมเว็บลดลง เพื่อเป็นวิธีแก้ปัญหาการแจ้งเตือนเหล่านี้ องค์กรมักจะสนับสนุนให้พนักงานเพิกเฉยต่อการแจ้งเตือนและดำเนินการต่อไป สิ่งนี้อาจทำให้เกิดนิสัยที่เป็นอันตรายในหมู่ผู้ใช้ที่อาจตัดสินใจเพิกเฉยต่อการแจ้งเตือนเหล่านี้บนเว็บไซต์ออนไลน์อื่น ๆ ต่อไป ซึ่งอาจตกเป็นเหยื่อของเว็บไซต์ฟิชชิ่ง
  2. ใบรับรองที่ลงนามด้วยตนเองมีระดับความปลอดภัยต่ำเนื่องจากใช้เทคโนโลยีการเข้ารหัสและแฮชระดับต่ำ ดังนั้นระดับความปลอดภัยอาจไม่เท่ากับนโยบายความปลอดภัยมาตรฐาน
  3. นอกจากนี้ ไม่มีการรองรับฟังก์ชันโครงสร้างพื้นฐานคีย์สาธารณะ (PKI)

อย่างไรก็ตาม การใช้ใบรับรอง SSL ที่ลงนามด้วยตนเองไม่ใช่ความคิดที่ไม่ดีสำหรับการทดสอบบริการและแอปพลิเคชันบนเครื่องท้องถิ่นที่ต้องใช้การเข้ารหัส TLS/SSL

ในคู่มือนี้ คุณจะได้เรียนรู้วิธีการติดตั้งใบรับรอง SSL ที่ลงนามด้วยตนเองในเครื่องบนเว็บเซิร์ฟเวอร์ Apache localhost บนระบบเซิร์ฟเวอร์ CentOS 8

ข้อกำหนดเบื้องต้น:

ก่อนเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณมีข้อกำหนดพื้นฐานต่อไปนี้:

  1. อินสแตนซ์ของเซิร์ฟเวอร์ CentOS 8
  2. ติดตั้งเว็บเซิร์ฟเวอร์ Apache บนเซิร์ฟเวอร์
  3. ชื่อโฮสต์ที่กำหนดค่าและกำหนดไว้ในไฟล์ /etc/hosts แล้ว สำหรับคู่มือนี้ เราจะใช้ tecmint.local ชื่อโฮสต์สำหรับเซิร์ฟเวอร์ของเรา

ขั้นตอนที่ 1: การติดตั้ง Mod_SSL บน CentOS

1. ในการเริ่มต้น คุณต้องตรวจสอบว่ามีการติดตั้งและใช้งานเว็บเซิร์ฟเวอร์ Apache แล้ว

sudo systemctl status httpd

นี่คือผลลัพธ์ที่คาดหวัง

หากเว็บเซิร์ฟเวอร์ไม่ได้ทำงานอยู่ คุณสามารถเริ่มต้นและเปิดใช้งานได้เมื่อบูตเครื่องโดยใช้คำสั่ง

sudo systemctl start httpd
sudo systemctl enable httpd

หลังจากนั้นคุณสามารถยืนยันได้ว่า Apache เปิดใช้งานอยู่หรือไม่

2. หากต้องการเปิดใช้งานการติดตั้งและการตั้งค่าใบรับรอง SSL ที่ลงนามด้วยตนเองในเครื่อง จำเป็นต้องมีแพ็คเกจ mod_ssl

sudo dnf install mod_ssl

เมื่อติดตั้งแล้ว คุณสามารถตรวจสอบการติดตั้งได้ด้วยการเรียกใช้

sudo rpm -q mod_ssl

นอกจากนี้ ตรวจสอบให้แน่ใจว่าได้ติดตั้งแพ็คเกจ OpenSSL แล้ว (OpenSSL ติดตั้งมาโดยค่าเริ่มต้นใน CentOS 8)

sudo rpm -q openssl 

ขั้นตอนที่ 2: สร้างใบรับรอง SSL ที่ลงนามด้วยตนเองในเครื่องสำหรับ Apache

3. ด้วยการตรวจสอบเว็บเซิร์ฟเวอร์ Apache และข้อกำหนดเบื้องต้นทั้งหมด คุณจะต้องสร้างไดเร็กทอรีที่จะจัดเก็บคีย์การเข้ารหัสไว้ภายใน

ในตัวอย่างนี้ เราได้สร้างไดเร็กทอรีที่ /etc/ssl/private

sudo mkdir -p /etc/ssl/private

ตอนนี้สร้างคีย์ใบรับรอง SSL ในเครื่องและไฟล์โดยใช้คำสั่ง:

sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout tecmint.local.key -out tecmint.local.crt

มาดูกันว่าตัวเลือกบางตัวในคำสั่งนั้นย่อมาจากอะไร:

  • req -x509 – สิ่งนี้บ่งชี้ว่าเรากำลังใช้ x509 Certificate Signing Request (CSR)
  • -nodes – ตัวเลือกนี้สั่งให้ OpenSSL ข้ามการเข้ารหัสใบรับรอง SSL โดยใช้ข้อความรหัสผ่าน แนวคิดนี้คือเพื่อให้ Apache สามารถอ่านไฟล์ได้โดยไม่ต้องมีการแทรกแซงจากผู้ใช้ใดๆ ซึ่งจะเป็นไปไม่ได้หากมีการจัดเตรียมข้อความรหัสผ่าน
  • -newkey rsa:2048 – สิ่งนี้บ่งชี้ว่าเราต้องการสร้างคีย์ใหม่และใบรับรองใหม่พร้อมกัน ส่วน rsa:2048 บ่งบอกว่าเราต้องการสร้างคีย์ RSA 2048 บิต
  • -keyout – ตัวเลือกนี้ระบุตำแหน่งที่จะจัดเก็บไฟล์คีย์ส่วนตัวที่สร้างขึ้นเมื่อสร้าง
  • -ออก – ตัวเลือกระบุตำแหน่งที่จะวางใบรับรอง SSL ที่สร้างขึ้น

ขั้นตอนที่ 3: ติดตั้งใบรับรอง SSL ที่ลงนามด้วยตนเองในเครื่องบน Apache

4. เมื่อสร้างไฟล์ใบรับรอง SSL แล้ว ถึงเวลาติดตั้งใบรับรองโดยใช้การตั้งค่าของเว็บเซิร์ฟเวอร์ Apache เปิดและแก้ไขไฟล์การกำหนดค่า /etc/httpd/conf.d/ssl.conf

sudo vi /etc/httpd/conf.d/ssl.conf

ตรวจสอบให้แน่ใจว่าคุณมีบรรทัดต่อไปนี้ระหว่างแท็กโฮสต์เสมือน

<VirtualHost *:443>
    ServerAdmin [email 
    ServerName www.tecmint.local
    ServerAlias tecmint.local
 
    DocumentRoot /var/www/html
 
    SSLEngine on
    SSLCertificateFile /etc/ssl/private/tecmint.local.crt
    SSLCertificateKeyFile /etc/ssl/private/tecmint.local.key
</VirtualHost>

บันทึกและออกจากไฟล์. เพื่อให้การเปลี่ยนแปลงมีผล ให้รีสตาร์ท Apache โดยใช้คำสั่ง:

sudo systemctl restart httpd

5. เพื่อให้ผู้ใช้ภายนอกเข้าถึงเซิร์ฟเวอร์ของคุณได้ คุณต้องเปิดพอร์ต 443 ผ่านไฟร์วอลล์ดังที่แสดง

sudo firewall-cmd --add-port=443 --zone=public --permanent
sudo firewall-cmd --reload

ขั้นตอนที่ 3: การทดสอบใบรับรอง SSL ที่ลงนามด้วยตนเองในเครื่องบน Apache

เมื่อกำหนดค่าทั้งหมดเรียบร้อยแล้ว ให้เปิดเบราว์เซอร์ของคุณและเรียกดูที่อยู่เซิร์ฟเวอร์ของคุณโดยใช้ที่อยู่ IP ของเซิร์ฟเวอร์หรือชื่อโดเมนโดยใช้โปรโตคอล https

เพื่อปรับปรุงการทดสอบ คุณอาจพิจารณาเปลี่ยนเส้นทางโปรโตคอล HTTP ไปยัง HTTPS บนเว็บเซิร์ฟเวอร์ Apache ด้วยเหตุนี้เมื่อใดก็ตามที่คุณเรียกดูโดเมนด้วย HTTP ธรรมดา โดเมนนั้นจะถูกเปลี่ยนเส้นทางไปยังโปรโตคอล HTTPS โดยอัตโนมัติ

ดังนั้นเรียกดูโดเมนหรือ IP ของเซิร์ฟเวอร์ของคุณ

https://domain_name/

คุณจะได้รับการแจ้งเตือนว่าการเชื่อมต่อไม่ปลอดภัยดังที่แสดง ซึ่งจะแตกต่างกันไปในแต่ละเบราว์เซอร์ ดังที่คุณอาจเดาได้ การแจ้งเตือนนี้เกิดจากการที่ใบรับรอง SSL ไม่ได้ลงนามโดย ผู้ออกใบรับรอง และเบราว์เซอร์จะลงทะเบียนและรายงานว่าใบรับรองนั้นไม่สามารถเชื่อถือได้

หากต้องการไปยังเว็บไซต์ของคุณ ให้คลิกที่แท็บ 'ขั้นสูง' ตามที่แสดงด้านบน:

ถัดไป เพิ่มข้อยกเว้นให้กับเบราว์เซอร์

สุดท้ายนี้ ให้โหลดเบราว์เซอร์ของคุณใหม่และสังเกตว่าขณะนี้คุณสามารถเข้าถึงเซิร์ฟเวอร์ได้แล้ว แม้ว่าจะมีคำเตือนบนแถบ URL ว่าไซต์นั้นไม่ปลอดภัยอย่างสมบูรณ์ด้วยเหตุผลเดียวกับที่ใบรับรอง SSL ลงนามด้วยตนเองและไม่ได้ลงนามโดย ผู้ออกใบรับรอง

เราหวังว่าคุณจะสามารถดำเนินการต่อและสร้างและติดตั้งใบรับรอง SSL ที่ลงนามเองบนเว็บเซิร์ฟเวอร์ Apache localhost บน CentOS 8 ได้