ลืมรหัสผ่าน
 สมัครเลย
ค้นหา
อ่าน: 817|ตอบ: 0

วิธีสร้าง SSL ไว้ใช้กับ localhost พร้อมทำสีเขียว

[คัดลอกลิงก์]

1

เธรด

0

โพสต์

26

เครดิต

ผู้ควบคุม

เครดิต
26
โพสต์เมื่อ 27-9-2022 18:57:02 | แสดงเธรดทั้งหมด |โหมดการอ่าน
บทความนี้จะแนะนำวิธีการเปลี่ยนการเข้าใช้งาน localhost จากเดิมที่เมื่อเข้าผ่าน https แล้วจะขึ้นว่า "Not Secure" ให้สามารถใช้งานได้ปกติ
ของต้องเตรียม
  • สำหรับ Windows จะใช้เป็น Cygwin ส่วน UNIX นั้นส่วนใหญ่จะมีคำสั่ง openssl อยู่แล้ว
  • Webbrowser รุ่นปี 2020 ขึ้นไป (รุ่นเก่าๆ จะต้องไปทำใน MMC)
  • ตัวแก้ไขข้อความ เช่น VS Code
  • เซิฟเวอร์อะไรก็ได้ที่เปิดใช้ SSL ได้ (ในที่นี้ใช้ httpd)

สารบัญ
  • สร้าง Root CA สำหรับใช้เป็นผู้ให้บริการ
  • สร้างใบรับรอง SSL ของ localhost แล้วเซ็นใบรับรองเข้ากับตัว Root CA
  • ใส่ใบรับรอง localhost ในเซิฟเวอร์
  • ลองเข้าเว็บ localhost เพื่อเช็คว่าเข้า https ได้
  • ใช้เว็บเบราวเซอร์เพิ่ม Root CA ลงไปในผู้ให้บริการที่ได้รับอนุญาต อาจจะต้อง Restart ก่อนถึงจะพบว่าใบรับรองสีเขียวแล้ว

ขั้นตอนที่ 1
สร้าง CA certificate หรือใบรับรองฝั่งผู้ให้บริการ โดยปกติแล้วหากเราจะทำแบบออนไลน์ทั่วโลกเราจะต้องไปสมัคร SSL กับผู้ให้บริการใบรับรองต่างๆ แต่ในที่นี้เราใช้กับเครื่องของเราเองไม่จำเป็นต้องลงทะเบียนกับใครเราก็สามารถตั้งตัวเองเป็นผู้ให้บริการได้เลย

เริ่มจากสร้าง คีย์ ของเราขึ้นมาก่อนด้วยคำสั่ง
  1. $ openssl genrsa -out CA.key -des3 2048
คัดลอกโค๊ด
ในการสร้างคีย์นั้นเราจะต้องกำหนด passphrase เองแล้วก็จดไว้ด้วยเพราะต้องนำไปใช้ต่อในการสร้าง root CA
คำสั่งในการสร้างตัว root CA โดยจะเป็นการดึงเอา CA.key มาสร้างเป็นใบรับรองสิทธิ์ของฝั่งผู้ให้บริการ
  1. $ openssl req -x509 -sha256 -new -nodes -days 3650 -key CA.key -out CA.pem
คัดลอกโค๊ด

ขั้นตอนที่ 2

สร้างใบรับรองให้กับ localhost จะเป็นเสมือนใบรับรองในเครื่องเราก่อนว่าสามารถใช้งาน SSL ได้
ก่อนอื่นต้องเตรียมข้อมูลสำหรับการสร้างใบรับรองก่อนโดยเราจะสร้างไฟล์ขึ้นมาชื่อ localhost.ext แล้วกดหนดเนื้อหาดังต่อไปนี้
  1. authorityKeyIdentifier = keyid,issuer
  2. basicConstraints = CA:FALSE
  3. keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
  4. subjectAltName = @alt_names

  5. [alt_names]
  6. DNS.1 = localhost
  7. IP.1 = 127.0.0.1
คัดลอกโค๊ด
เป็นการบอกรายละเอียดว่าใบรับรองนี้เป็นของไอพีไหนโดเมนอะไร
ตรงนี้สามารถนำไปประยุคใช้กับการกำหนด hosts ได้ด้วย สำหรับวินโดวส์กดหนดได้ที่ /etc/hosts

สร้างคีย์ให้กับ localhost ด้วยคำสั่งต่อไปนี้
  1. $ openssl genrsa -out localhost.key -des3 2048
คัดลอกโค๊ด
กำหนด passphrase ให้กับคีย์แล้วก็จดไว้ด้วยเพราะเดี่ยวต้องใช้ตอนสร้างใบรับรองของ localhost

ต่อไปก็มาสร้างตัว request ในการขอทำสัญญาร่วมกับใบรับรองของเซิฟเวอร์พูดง่ายๆ คือมันคือใบคำร้องที่จะส่งจากเซิฟเวอร์ไปยังผู้ให้บริการหรือ CSR นั่นเอง
  1. $ openssl req -new -key localhost.key -out localhost.csr
คัดลอกโค๊ด
หลังจากกรอกรหัส passphrase เสร็จทีนี้เราก็จะมีทั้งคีย์ทั้งใบคำร้องแล้วต่อไปก็จะเป็นการนำเอาทั่วคู่ไปทำสัญญาร่วมกันกับผู้ให้บริการ ซึ่งปกติถ้าเราเป็นคนตั้งเซิฟเวอร์เราจะต้องส่งคีย์กับคำร้องของเครื่องเราไปให้ผู้จำหน่าย SSL แต่ในที่นี้มันคือเราเองก็ใช้คำสั่งต่อไปนี้ในการทำขั้นตอนนี้เลย
  1. $ openssl x509 -req -in localhost.csr -CA CA.pem -CAkey CA.key -CAcreateserial -days 3650 -sha256 -extfile localhost.ext -out localhost.crt
คัดลอกโค๊ด
เสร็จแล้วเราก็จะได้ใบรับรองหรือ CRT มาซึ่งจะยังไม่สามารถเอาไปใช้ได้เพราะเนื้อหาข้างในมันมาแบบเข้ารหัสแล้วเราก็ต้องนำมันมาถอดความก่อนโดยก็จะต้องใช้คีย์ localhost ของเรานั่นแหละในการถอดความ
  1. $ openssl rsa -in localhost.key -out localhost.decrypted.key
คัดลอกโค๊ด

ขั้นตอนที่ 3

ใสใบรับรองลงไปในเซิฟเวอร์ที่เราต้องการในที่นี้คือ Apache2 ก็จะต้องเอาไปกำหนดค่าใส่ไว้ในไฟล์ httpd.conf หรือ httpd_ssl.conf โดยเปลี่ยนการตั้งค่าหรือกรอกประมาณนี้
  1. <VirtualHost _default_:443>
  2.         SSLEngine on
  3.         SSLCertificateFile "${SRVROOT}/conf/localhost.crt"
  4.         SSLCertificateKeyFile "${SRVROOT}/conf/localhost.decrypted.key"
  5. </VirtualHost>  
คัดลอกโค๊ด
ตรงนี้คือแล้วแต่เลยว่าใครใช้กับเซิฟเวอร์ไหนต้องตั้งยังไงหลักๆ ก็คือการเอา CRT กับ KEY ไปใส่นั่นเองหลังจากกำหนดเสร็จแล้วก็รีสาร์ทเซิฟเวอร์นิดหนึ่งดูว่ากำหนดค่าถูกหรือเปล่าติดขัดตรงไหน

ขั้นตอนที่ 4
เปิดเว็บเบราวเซอร์ขึ้นมาแล้วลองเข้าไปที่ https://localhost ดูว่าสามารถเปิดเว็บได้ไหมมาถึงตรงนี้มันจะยังแค่เปิดได้เป็น SSL แล้ว แต่มันยังแดงๆ อยู่ใช่ไหมละ
Screenshot 2022-09-27 185358.png


ขั้นตอนที่ 5
นำเข้าตัว Root CA ของเราไปไว้ในหมวดผู้ให้บริการที่น่าเชื่อถือ ตรงนี้ถ้าเป็นเว็บเบราว์เซอร์รุ่นใหม่ ๆ จะสามารถทำได้ใน Settings ของโปรแกรมเลยโดยเข้าไปที่ Options ไปที่ส่วนตั้งค่าความปลอดภัย Privacy and Security แล้วในนั้นจะมีหมวด Certificate อยู่กดเข้าไปจะโชว์ประมาณนี้
Screenshot 2022-09-27 184231.png


เราก็เพิ่มตัว CA.pem ของเราลงไปในแทบ Trusted Autherities
Screenshot 2022-09-27 184359.png


เสร็จแล้วบางคนจะเห็นว่าลองเข้า localhost แล้วมันเป็นสีเขียวเลย แต่ถ้าบางคนยังไม่เห็นให้ลองรีสตาร์ทเครื่องดูก่อนเพราะอาจจะติดแคช เท่านี้ก็ได้ https://localhost เขียวๆ ไว้ใช้แล้วครับ
Screenshot 2022-09-27 184554.png

Screenshot 2022-09-27 184513.png


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

คุณต้องเข้าสู่ระบบก่อนที่จะตอบกลับ เข้าระบบ | สมัครเลย

เงื่อนไขรางวัล

เวอร์ชันมือถือ|DCX

GMT+7, 21-11-2024 17:15

ขับเคลื่อนโดย Discuz! X3.5 ได้รับการอนุญาต

ลิขสิทธิ์ © 2001-2024 เทนเซ็นต์คลาวด์

ตอบกลับด่วน กลับไปด้านบน กลับไปที่รายการ