สร้าง self-signed certificate และทำให้เบราว์เซอร์เชื่อถือ

บทความนี้จะแสดงวิธีการสร้าง self-signed certificate เอาไว้ใช้เอง อย่างง่ายๆ และทำให้เบราว์เซอร์รวมถึงอุปกรณ์มือถืออย่างเช่น Android เชื่อถือได้อีกด้วย.

โดยปกติ certificate จะมีกระบวนการต่างๆกว่าจะนำเข้าสู่ระบบหรือเว็บเบราว์เซอร์และได้รับความเชื่อถือ (trust) อย่างเช่น SSL ของ Let's encrypt ซึ่งถ้าหากเราสร้างขึ้นมาเอง จะไม่สามารถผ่านกระบวนการเหล่านั้นได้. แต่กระนั้นการจะใช้ SSL ที่มีในท้องตลาดไม่ว่าจะฟรีหรือเสียเงิน บางกรณีเราไม่สามารถจะสร้างอย่างถูกต้องได้เพราะติดขัดในขั้นตอนต่างๆ เช่น Let's encrypt ต้องการจะเข้าถึง HTTP port 80 ได้ เพื่อออกใบ cert แต่เครื่องคอมพิวเตอร์ที่เราใช้ ไม่มี public IP หรือมีแต่ไม่สามารถเลือก port ได้ เป็นต้น. กรณีอย่างนี้ก็จะต้องหาทางออกโดยใช้ self-signed certificate.

ใช้ OpenSSL

ดาวน์โหลดและติดตั้ง OpenSSL ได้จาก https://www.openssl.org/source/ หรือสำหรับบน Windows เลือกดาวน์โหลดได้ที่ https://wiki.openssl.org/index.php/Binaries. หากคุณใช้เว็บเซิร์ฟเวอร์ Apache บน Windows มันจะมาด้วยกันกับไฟล์ httpd.exe.

เพิ่ม path ไปยัง openssl.exe ไว้ใน Windows environment.

เมื่อติดตั้ง OpenSSL เสร็จแล้ว ให้เพิ่ม path ไปยัง openssl.exe ไว้ใน Windows environment PATH เพื่อจะเรียกคำสั่ง openssl ได้โดยง่าย.

  1. กดเมนู Start
  2. พิมพ์ systempropertiesadvanced.exe
  3. คลิก Environment Variables
  4. ที่กรอบ System Variables ดับเบิลคลิกที่ PATH
  5. เพิ่ม path ไปยัง openssl.exe
  6. กด OK ทั้งหมด

สร้าง Root cert.

ขั้นตอนนี้ ผู้อ่านอาจจะสร้างไฟล์ต่างๆไว้ในโฟลเดอร์ของ Apache/conf ก็ได้ เพื่อความสะดวกในการกำหนด config ไปด้วย. ให้เข้าไปที่โฟลเดอร์ดังกล่าวแล้วพิมพ์คำสั่งต่อไปนี้.

openssl req -x509 -sha256 -days 3650 -nodes -newkey rsa:2048 -subj="/CN=localhost.localhost/C=TH/L=Bangkok" -keyout rootCA.key -out rootCA.crt

จากคำสั่งดังกล่าว โปรแกรมจะสร้างไฟล์ rootCA.key และ rootCA.crt มาให้ 2 ไฟล์ ซึ่งทั้ง 2 ไฟล์นี้จะมีประโยชน์อย่างมากเมื่อนำเข้าไปในเว็บเบราเซอร์ให้เชื่อถือ.

สร้าง Certificate

ขั้นตอนนี้จะอยู่ในโฟลเดอร์เดียวกันกับขั้นตอนสร้าง Root certificate. ให้สร้างไฟล์ config ชื่อ server.cnf แล้วระบุข้อมูลต่อไปนี้ โดยแก้ไขส่วนต่างๆให้ตรงตามความจริงของผู้อ่านเอง.

[req]
default_bits = 2048
prompt = no
default_md = sha256
x509_extensions = v3_req # The extensions to add to the self signed cert
distinguished_name = dn

[dn]
countryName = TH
stateOrProvinceName = Bangkok
localityName = City
emailAddress = webmaster@localhost.localhost
commonName = localhost.localhost

[v3_req]
subjectAltName = @alt_names

[alt_names]
DNS.1 = localhost
DNS.2 = localhost.localhost
DNS.3 = mydomain.local

ผู้อ่านอาจเปลี่ยนแปลง, ลบ, หรือเพิ่มเติมโดเมนต่างๆที่อยู่ภายใน alt_names ได้ให้สอดคล้องตามที่ต้องการ. จากนั้นใช้คำสั่งต่อไปนี้.

openssl req -x509 -nodes -newkey rsa:2048 -CA rootCA.crt -CAkey rootCA.key -keyout server.key -days 3650 -out server.crt -config server.cnf

จากคำสั่งด้านบน โปรแกรมจะสร้างไฟล์ server.key, server.crt ทั้งหมดจำนวน 2 ไฟล์.

นำไปใช้กับ Apache

สำหรับขั้นตอนเพิ่ม SSL certificate เพื่อนำไปใช้กับเว็บเซิร์ฟเวอร์อย่างเช่น Apache นั้น สามารถอ่านต่อได้ที่ เปิดใช้งาน SSL บน Apache.

ทำให้เบราว์เซอร์และ Android เชื่อถือ

ขั้นตอนต่อไปนี้เป็นการทำให้เว็บเบราว์เซอร์ อาทิเช่น Firefox, Google Chrome และระบบปฏิบัติการอื่น เช่น Android เชื่อถือ self-signed certificate ดังกล่าว.

Google Chrome

ขั้นตอนต่อไปนี้สำหรับ desktop เท่านั้น

  1. เปิดเมนู Settings > Privacy and security > Security > Manage device certificates
  2. คลิกที่แท็บ Trusted Root Certification Authorities
  3. คลิก Import...
  4. กด Next แล้ว Browse... เลือกไฟล์ rootCA.crt ที่ได้สร้างไว้
  5. กด Next แล้วเลือก Place all certificates in the following store แล้วเลือก Trusted Root ตามแท็บที่ได้เลือกไว้ จากนั้นกด Next จนสิ้นสุดขั้นตอน
  6. คลิกที่ชื่อ certificate ที่ได้ import ไว้แล้ว จากนั้นคลิก Advanced
  7. ติ๊กเลือกทุกอย่างแล้วกด OK และ Close
  8. Restart Google Chrome

Firefox

ขั้นตอนต่อไปนี้สำหรับ desktop เท่านั้น

  1. เปิดเมนู Settings > Privacy & Security
  2. คลิกที่ปุ่ม View Certificates
  3. คลิกที่แท็บ Autorities
  4. คลิก Import...
  5. เลือกไฟล์ rootCA.crt ที่ได้สร้างไว้
  6. คลิกที่ชื่อ certificate ที่ได้ import ไว้แล้ว จากนั้นคลิก Edit Trust
  7. ติ๊กเลือกทุกอย่างแล้วกด OK
  8. Restart Firefox

Android

  1. ให้ทำการคัดลอกไฟล์ rootCA.crt และ rootCA.key ที่ได้สร้างไว้แล้ว ไปบนอุปกรณ์ Android ด้วยวิธีใดวิธีหนึ่ง
  2. เปิดแอป Settings > Security > Advanced > Encryption & credentials
  3. แตะที่ Install a certificate > CA certificate
  4. แตะที่ Install anyway
  5. เลือกไฟล์ที่นำเข้ามาในขั้นตอนที่ 1 แล้ว

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

คุณอาจใช้แท็กHTMLและแอททริบิวต์เหล่านี้: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>