กระบวนการจัดเตรียม SSL Certificate สำหรับเครื่องแม่ข่ายมหาวิทยาลัยบูรพา
กระบวนการจัดเตรียม SSL Certificate สำหรับเครื่องแม่ข่ายมหาวิทยาลัยบูรพา (อิงระเบียบราชการ) แบ่งออกเป็น 2 ส่วนใหญ่ ๆ คือ 1) การจัดหา/จัดซื้อ SSL Certificate 2) การเตรียม Certificate สำหรับนำไปติดตั้งใช้งาน
ส่วนที่ 1 การจัดหา/จัดซื้อ SSL Certificate
(1) สำรวจราคาในตลาด จากนั้นนำเสนองบประมาณ เพื่อเตรียมโครงการจัดซื้อตามระเบียบการจัดซื้อจัดจ้างและการบริหารพัสดุภาครัฐ (ประสานเจ้าหน้าที่พัสดุ)
(2) เมื่อผ่านขั้นตอนการจัดซื้อตามระเบียบฯ และได้ผู้ขายแล้ว ให้ประสานงานกับทางผู้ขายโดยใช้ช่องทางอีเมลเป็นช่องทางติดต่อประสานงาน และให้ใช้อีเมลทางการด้วย เช่น someone@buu.ac.th
(3) เมื่อตกลงช่องทางประสานงานกับผู้ขายได้แล้ว ให้สอบถามผู้ขายเกี่ยวกับวิธีการยืนยันความเป็นเจ้าของ domain name หรือ host name ว่าผู้ขายใช้ช่องทางไหนและทางเรารองรับวิธีนั้นด้วยไหม วิธีการยืนยันความเป็นเจ้าของ จะใช้สำหรับการลงทะเบียนขอมี Certificate กับทาง Certificate Authority หรือ CA หรือ ผู้ออกใบรับรองอิเล็กทรอนิกส์ โดย ผู้ขาย ในที่นี้ คือ ตัวแทนจำหน่ายอีกที (ผู้ขายไม่ใช่ CA) ต่อให้ซื้อผ่าน Official Web Site ของ CA นั้น ๆ ก็ถือว่าเป็นแผนก/section ของการจำหน่าย ตัวอย่างเช่น มหาวิทยาลัยบูรพา ต้องการใช้งาน SSL Certificate ประเภท Wildcard Certificate คือ *.buu.ac.th ในที่นี้ เราจะต้องยืนยันความเป็นเจ้าของ domain คือ buu.ac.th ของเราเอง ซึ่ง วิธีการยืนยันฯ CA อาจจะใช้วิธีตอบกลับหรือโต้ตอบผ่านทางอีเมล administrator@buu.ac.th (หรืออีเมลอื่นที่บ่งบอกว่าเป็น “ผู้ดูแลระบบ”) หรือจะใช้วิธี Update DNS record (TXT) หรือใช้วิธี Upload ไฟล์ไปยังเว็บไซต์หลัก (ทางการ) ขององค์กร เช่น www.buu.ac.th ก็ได้ ซึ่งไม่ว่าจะเป็นวิธีใดก็ตาม หากเราสามารถทำตามขั้นตอนการยืนยันตามที่ CA กำหนดเอาไว้ได้ทั้งหมด ก็คาดได้ว่า เราเป็นเจ้าของตัวจริง (มีสิทธิ์เข้าถึงหรือแก้ไขเปลี่ยนแปลงข้อมูล) โดยส่วนใหญ่แล้ว ตัวแทนในประเทศไทย นิยมใช้การโต้ตอบทางอีเมล
(4) เมื่อทราบช่องทางการยืนยันความเป็นเจ้าของ domain name หรือ host name แล้ว ให้ประสานกับผู้ดูแลระบบท่านอื่นที่เกี่ยวข้องสำหรับนัดช่วงเวลาที่จะให้ช่วยดำเนินการ (กรณีไม่มีสิทธิ์เข้าถึงหรือแก้ไข)
(5) ในระหว่างนี้ ทางผู้ขายจะแจ้งมาทางอีเมลเพื่อให้เราดำเนินการ สร้างไฟล์ csr เพื่อนำไปเริ่มขั้นตอนการ request เพื่อขอ Certificate กับ CA, ซึ่งปกติแล้วผู้ขายจะมีเครื่องมือหรือตัวช่วยในการสร้างไฟล์ csr, ซึ่งผู้ขายอาจจะให้ทำผ่านหน้าเว็บไซต์ของบริษัท หรือให้เรา Download โปรแกรมมาติดตั้งและทำที่เครื่องเราเองก็ได้ – (ความเห็นผู้เขียน) แต่ถ้าต้องการความปลอดภัยสูงสุดและหลีกเลี่ยงการพึ่งพาโปรแกรมที่เราไม่รู้จัก (ไม่เชื่อถือ) ทางเลือกอื่นที่จะสามารถ สร้าง csr ไฟล์ได้ คือใช้ Open source OpenSSL แทน (เนื่องจากเป็น open source ได้รับการตรวจสอบ source code จากนักพัฒนาทั่วโลกแล้ว) ก่อนสร้างไฟล์ csr ควรตรวจสอบข้อกำหนดการสร้าง csr ก่อน, อาจจะสอบถามผู้ขายหรือหาได้จากเว็บไซต์ CA ก็ได้ เช่น ขนาด key ใช้กี่บิต การตั้งชื่อ Subject, รวมทั้งข้อมูลอื่น ๆ ที่จำเป็นต้องใส่ในขั้นตอนการ สร้าง csr ไฟล์ด้วย ซึ่งคำสั่งสำหรับสร้างไฟล์ csr ด้วย openssl มีดังนี้
openssl req -new -newkey rsa:2048 -nodes -out star_buu_ac_th.csr -keyout star_buu_ac_th.key -subj "/C=TH/ST=Chonburi/L=Saensuk/O=Burapha University/CN=*.buu.ac.th/"
ตามคำสั่งด้านบนและข้อมูลที่ต้องจัดเตรียมมีดังนี้
- ชนิดและขนาด key (-newkey) ในตัวอย่างเป็น RSA ขนาด 2048 บิต (rsa:2048)
- ชื่อไฟล์สำหรับ csr (-out) ไฟล์ที่จะถูกสร้าง (generate) จากคำสั่ง openssl จากตัวอย่างคือ star_buu_ac_th.csr
- ชื่อไฟล์สำหรับ key (-keyout) ไฟล์ที่จะถูกสร้าง (generate) จากคำสั่ง openssl จากตัวอย่างคือ star_buu_ac_th.key
- รายละเอียดของหน่วยงาน (-subj) โดยให้อยู่ใน format นี้:
/C=[CO]/ST=[ST or Fullname]/L=[city]/O=[org]/OU=[unit]/CN=[display_name]/
แต่ละส่วนมีความหมายดังนี้
[CO] คือ รหัสประเทศ (country code) เช่น TH
[ST] คือ รหัสของรัฐ (เราใช้ชื่อจังหวัด: Chonburi) (state code)
[city] คือ ชื่อเมือง (ท้องที่) เช่น Saensuk
[org] คือ ชื่อหน่วยงาน เช่น Burapha University
[display_name] คือ ชื่อ common name ที่ปรากฏใน certificate จะใช้ domain name หรือ host name กรณี wildcard certificate จะมี *. นำหน้า เช่น domain name: buu.ac.th ชื่อเต็ม จะเป็น *.buu.ac.th
ตัวอย่างจากคำสั่งด้านบนคือ:
/C=TH/ST=Chonburi/L=Saensuk/O=Burapha University/CN=*.buu.ac.th/
(6) เมื่อรัน คำสั่ง จากข้อ 5 เสร็จแล้ว จะได้ไฟล์ 2 ไฟล์คือ star_buu_ac_th.csr และ star_buu_ac_th.key ซึ่งไฟล์ที่จะใช้สำหรับ request ขอ Certificate กับ CA คือไฟล์ star_buu_ac_th.csr เท่านั้น ส่วนไฟล์ star_buu_ac_th.key ให้เก็บไว้ใช้เฉพาะการติดตั้งกับเครื่อง server (ดูรายละเอียดในขั้นตอนการนำ certificate ไปใช้งาน)
(7) ในการ request เพื่อขอ Certificate กับทาง CA สามารถทำได้ด้วยตนเอง โดยไปที่เว็บไซต์ของทาง CA ที่แล้ว upload ไฟล์ star_buu_ac_th.csr ไปยังช่องทางการ request ที่ทาง CA เตรียมเอาไว้ให้ – หรือ – สามารถส่งไฟล์ star_buu_ac_th.csr (ควรไฟล์ก่อนส่ง) ไปทางอีเมล ให้ผู้ขายดำเนินการ request ให้เราก็ได้
(8) เมื่อเรา request ไปแล้ว ทาง CA จะพิจารณาไฟล์ที่ส่งไป request ซึ่งในระหว่างนี้จะเป็นขั้นตอนการยืนยันตัวตนถึงการมีอยู่จริงของเรา รายละเอียดการตรวจสอบนั้น ขึ้นอยู่กับ ประเภทของ Certificate ที่เราขอ, ยิ่งเกรดความน่าเชื่อถือของ Certificate สูงเท่าไหร่ การตรวจสอบก็จะเข้มข้นขึ้นตามไปด้วย – ในที่นี้มหาวิทยาบูรพา ขอใช้ wildcard certificate (*.buu.ac.th) วิธีการยืนยันตัวตน ทาง CA ให้เราตอบกลับผ่านอีเมล Administrator ของส่วนงาน (กรณีที่ทำผ่านเว็บไซต์ของ CA สามารถเลือกวิธีอื่นได้) โดยลักษณะอีเมลที่ส่งมาจะเป็นการให้คลิกตาม Link ที่ทาง CA เตรียมเอาไว้ให้ เมื่อเราคลิก Link เสร็จ ทาง CA จะออก Certificate ส่งกลับมาให้เราทางอีเมล (กรณีที่ทำผ่านเว็บไซต์ของ CA, เราสามารถ download ไฟล์ certificate ได้เลย)
ส่วนที่ 2 การเตรียม Certificate สำหรับนำไปติดตั้งใช้งาน
(1) เมื่อเราได้ไฟล์ certificate จากทางผู้ขายมาแล้ว เช่น star_buu_ac_th.crt ให้ตรวจสอบ format ไฟล์ certificate ก่อนที่จะนำไปใช้งาน ซึ่งโดยปกติแล้ว เราจะได้มา 3 ไฟล์ คือ
- ไฟล์ yourdomain.crt คือไฟล์ SSL certificate เช่น star_buu_ac_th.crt
- ไฟล์ CA.crt คือไฟล์ Intermediate CA หรือ Chain Certificate เช่น DigiCertCA.crt
- ไฟล์ TrustedRoot.crt คือไฟล์ Trusted Root CA (ไม่ต้องติดตั้ง หาก Server ไม่ต้องการ)
การตรวจสอบไฟล์ทำได้โดยคำสั่งต่อไปนี้
cat star_buu_ac_th.crt
ซึ่งข้อมูลในไฟล์ควรมีลักษณะแบบนี้ (PEM format)
-----BEGIN CERTIFICATE-----
MIIGhDCCBWygAwIBAgIQDUeMfW+td4ZvPPs6CbrKrjANBgkqhkiG9w0BAQsFADBZ
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMTMwMQYDVQQDEypS
YXBpZFNTTCBUTFMgRFYgUlNBIE1peGVkIFNIQTI1NiAyMDIwIENBLTEwHhcNMjIw
NDIwMDAwMDAwWhcNMjMwNTIxMjM1OTU5WjAWMRQwEgYDVQQDDAsqLmJ1dS5hYy50
aDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL61lRv3UyKwJCRrgkTZ
rwBEHopUAkNk1Hbz2qB16YIx0H5O2smlq+zBxRiCCbS1WpMBd4mzWZG5YZtk6Cvl
XoZgOccXANgR5/Ggiaq9S8GDfApo0D1w1C0gzZiiDM+K+4rqnga25Q0Wsie9LX6z
uqz+uIkONhHkHyAtfbbN4zFARqzjKFBjNn01f2+MiikM7YuWaAjDxdIQvekswmez
/fazjL3WdMNbsiSGgE9h07xKnM68ZMETLjuWt7VW9nBw/g+mFjV0+CZeGBqoWOLE
EM7tfV4N/KLgYRPVH2/5Ii+jfXApsUXl/wF4bZm9QzAZ+ik5FRMxFw==
-----END CERTIFICATE-----
ถ้าปรากฏว่ามีอักขระอื่น ๆ อยู่นอกเหนือจาก -----BEGIN CERTIFICATE-----
และ -----END CERTIFICATE-----
ให้ลบออกให้หมด ไฟล์ CA.crt และ TrustedRoot.crt ก็ให้ตรวจสอบเช่นกัน
(2) เมื่อตรวจสอบ format ไฟล์ เสร็จแล้ว ให้เรานำไฟล์ .key ที่เราได้ในขึ้นการสร้าง .csr ไฟล์ (star_buu_ac_th.key) มา pack รวมกันกับไฟล์ star_buu_ac_th.crt, DigiCertCA.crt และ TrustedRoot.crt โดยสร้างโฟลเดอร์ เช่น buucert2023 แล้วนำทั้ง 4 ไฟล์มาใส่ จากนั้นให้ zip เป็นไฟล์ .zip สำหรับนำไปติดตั้งที่ server ต่อไป
(3) การนำไปติดตั้งนั้น ขึ้นอยู่กับ Application Server นั้น ๆ ว่ามีการตั้งค่าอย่างไร โดยปกติแล้วจะอ้างอิง path ของไฟล์ certificate เช่น
ตัวอย่างใน Nginx การตั้งค่า ในไฟล์ config มีตัวอย่างดังนี้
ssl_certificate /etc/nginx/certs/server.crt;
ssl_certificate_key /etc/nginx/certs/server.key;
โดย ไฟล์ server.crt เป็นไฟล์ที่เกิดจาการ นำไฟล์ star_buu_ac_th.crt และ DigiCertCA.crt มาเรียงต่อกัน ให้ไฟล์ star_buu_ac_th.crt อยู่บน และไฟล์ DigiCertCA.crt อยู่ด้านล่าง มีรูปแบบ เช่น
-----BEGIN CERTIFICATE-----
MIIGIDCCBQigAwIBAgIQBiOWnvClNmIneVYu7atrZjANBgkqhkiG9w0BAQsFADBg
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMR8wHQYDVQQDExZSYXBpZFNTTCBUTFMgUlNBIENBIEcx
MB4XDTIzMDQyNzAwMDAwMFoXDTI0MDUyNzIzNTk1OVowFjEUMBIGA1UEAwwLKi5i
dXUuYWMudGgwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCorUVSkjgP
2F2OeYNJ9pqiqvS75iK+nc7DIfkQF0wWmkEbqjC+GXSBoHBlN1c7sT+R5HCwFkzI
Sq0HN1AblK8lHUIiTNubU5Sl5U1fRg+DxE6pjR0yauvtFvWkwpEGs5OEwv0vVlb0
qZ7yy/JgQ6aaTLYtxsOQCi9+TR3KDrcnv0v5gkGwR82+AN43szMbKfvS3zUO+/qL
Zxt6UCt4RlVtAHJyY0inC7JCUszPgXsYvS0pR84cU4p1hfBC
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEszCCA5ugAwIBAgIQCyWUIs7ZgSoVoE6ZUooO+jANBgkqhkiG9w0BAQsFADBh
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH
MjAeFw0xNzExMDIxMjI0MzNaFw0yNzExMDIxMjI0MzNaMGAxCzAJBgNVBAYTAlVT
CTq4G+zb43X1T77nJgSOI9pq/TqCwtukZ7u9VLL3JAq3Wdy2moKLvvC8tVmRzkAe
0xQCkRKIjbBG80MSyDX/R4uYgj6ZiNT/Zg6GI6RofgqgpDdssLc0XIRQEotxIZcK
zP3pGJ9FCbMHmMLLyuBd+uCWvVcF2ogYAawufChS/PT61D9rqzPRS5I2uqa3tmIT
44JhJgWhBnFMb7AGQkvNq9KNS9dd3GWc17H/dXa1enoxzWjE0hBdFjxPhUb0W3wi
8o34/m8Fxw==
-----END CERTIFICATE-----
ส่วน server.key ก็จะเป็นไฟล์ key (star_buu_ac_th.key) มีรูปแบบ เช่น
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC+tZUb91MisCQk
a4JE2a8ARB6KVAJDZNR289qgdemCMdB+TtrJpavswcUYggm0tVqTAXeJs1mRuWGb
ZOgr5V6GYDnHFwDYEefxoImqvUvBg3wKaNA9cNQtIM2YogzPivuK6p4GtuUNFrIn
vS1+s7qs/riJDjYR5B8gLX22zeMxQEas4yhQYzZ9NX9vjIopDO2LlmgIw8XSEL3p
zfLGzPk9Rq1NBCGir7HHKns3T5NKzLNl8nSxAsOfH4c+NRSG+w2rzAmye9HrYMn2
kxZRiRvpxGunvNaGtu+wMFSF1biprZgTWGyTz2spAoGAAnUswvGksbCOP/S0CQyo
AVbABBNAPKPcV0xKAepWqCv6rl5eJ+zzjgFWtAQrMjz9quiJWaA25Esb8mijrY9c
f6UXTOeaFvvGNlszWCaL0Cr39YMWr7mgK3pkdYU8qbdEF5ypN10Fmy8nN5zS3kmV
etlMJljdp05oJz40rp1DjYM=
-----END PRIVATE KEY-----
ตัวอย่างใน Windows Server (IIS) ให้ convert ไฟล์ 3 ไฟล์ คือ star_buu_ac_th.crt, star_buu_ac_th.key, และ DigiCertCA.crt จาก format: PEM ให้เป็น p12 ซึ่งสามารถทำได้ด้วยคำสั่ง openssl ดังนี้
echo "mysecret" > password.txt
openssl pkcs12 -export -passout file:password.txt -out buucert2023.p12 -inkey star_buu_ac_th.key -in star_buu_ac_th.crt -certfile DigiCertCA.crt
จากนั้นให้นำไฟล์ buucert2023.p12 ที่ได้จากคำสั่งด้านบน รวมทั้ง ให้ใช้ password: mysecret สำหรับติดตั้งไฟล์ p12 ใน windows server
(4) จัดส่งไฟล์ที่เตรียมเอาไว้ไปให้ผู้ดูแลระบบที่เกี่ยวข้อง เพื่อนำไปติดตั้งบน server ระบบสารสนเทศ ในช่องทางที่ตกลงกันไว้ (ที่ปลอดภัย)
.