Introduction
ในบทความนี้เราจะใช้การออกใบรับรอง Self-sign SSL certificate โดยใช้ openssl บน CentOS ออกใบรับรอง หรือเรียกว่า Certificate Authority (CA) ซึ่งจะทำหน้าที่ในการออกใบรับรองให้กับผู้ที่เข้ามาขอใบรับรอง
ขั้นตอนการออกแบบใบรับรองดิจิตอล
1. สร้าง Private Key ให้กับ CA (cakey.pem) ให้กับ CA
2. ออกใบรับรองให้กับ CA เพื่อให้แอปพลิเคชันต่างๆ สามารถตรวจสอบความถูกต้องของ Key ได้ (cacert.crt)
3. นำไฟล์ CSR ที่ต้องการออกใบรับรอง ทำการเซ็นโดยใช้ Private Key และ CERT. ของ CA (cakey.pem,cacert.crt)
4. ได้ใบรับรองของ CA และใบรับรองที่เรานำมาเซ็น (example.crt)
CSR (Certificate Signing Requests ) เมื่อเราต้องการใช้งาน SSL Certificate สิ่งที่ต้องทำคือการสร้างไฟล์ CSR ขึ้นมา โดยในไฟล์ CSR จะระบุข้อมูล Public Key และข้อมูลเบื้องต้นของระบบของเรา ทีท่ต้องการใช้งาน SSL โดยข้อมูลทั้งสองส่วนจะถูกนำไปใช้เมื่อเรานำไปออกไปรับรองดิจิทัล
ตัวอย่างข้อมูลที่เราต้องกรอก เมื่อทำการสร้างไฟล์ CSR
Country Name (2 letter code) [AU]:TH State or Province Name (full name) [Some-State]:Songkhla Locality Name (eg, city) []:Hatyai Organization Name (eg, company) [Internet Widgits Pty Ltd]:AbleNet Organizational Unit Name (eg, section) []:SE Common Name (e.g. server FQDN or YOUR name) []:AbleNet.co.th Email Address []:info@ablenet.co.th |
.
ขั้นตอนการออกใบรับรอง
Step 1 : สร้างไฟล์และโฟลเดอร์ โดยใช้คำสั่งดังนี้
1
2
3
4
5
6
7
|
mkdir demoCA cd demoCA mkdir certs mkdir newcerts mkdir private touch index.txt echo 10 > serial |
Step 2 : สร้างไฟล์ CSR จากแอปพลิเคชันที่เราต้องการนำมาออกใบรับรอง ยกตัวอย่างการสร้างไฟล์ CSR บน Cisco Meeting Server (CMS)
Step 3 : คัดลอกไฟล์ CSR ไปยังโฟลเดอร์ demoCA บน CentOS
Step 4 : คัดลอกไฟล์ openssl.cnf ไปยังโฟลเดอร์ demoCA
โดยไฟล์ไฟล์ openssl.cnf จะเก็บอยู่ที่ /System/etc/pki/tls/openssl.cnf
จากนั้นเปลี่ยนชื่อไฟล์จาก openssl.cnf เป็น openssl_local.cfg
Step 5 : เปลี่ยนค่าในคอนฟิกในไฟล์ openssl_local.cfg ดังนี้
- แก้ไขค่าในส่วนของ [CA_default]
- ลบเครื่องหมาย # ออกจากหน้าคำสั่ง “copy_extensions = copy”
- เปลี่ยนค่าจาก “policy = policy_match” เป็น “policy = policy_anything“
- เปลี่ยนค่าจาก “dir = /etc/pki/CA” เป็น “dir = .”
- เปลี่ยนค่า “default_days = 365” เป็น “default_days = 3650”
Step 6 : สร้าง Private Key ให้กับ CA โดยใช้คำสั่ง
1
|
openssl genrsa -aes256 -out private/cakey.pem 4096 |
ระบบจะให้ใส่รหัสผ่าน ให้เรากำหนดรหัสผ่านที่ต้องการ : รหัสผ่านดังกล่าวจะถูกใช้เมื่อเราทำการออกใบรับรอง
Step 7 : ออกใบรับรองสำหรับ CA
โดยใช้คำสั่งดังนี้ จากนั้นระบบจะถามรหัสผ่านของ Private Key ให้เราใส่รหัสผ่านที่เราได้สร้างไว้ใน Step 6
1
|
openssl req -new -x509 -days 3650 -key private/cakey.pem -config openssl_local.cfg -sha1 -extensions v3_ca -out cacert.crt |
Step 9 : เซ็นรับรองไฟล์ CSR (webadmin2.csr) ด้วย คำสั่งดังนี้
1
|
openssl ca -config openssl_local.cfg -cert cacert.pem -keyfile private/cakey.crt -in webadmin2.csr -out certs/webadmin2.crt -md sha1 |
Step 10 : ตรวจสอบใบรับรองที่เราทำการเซ็น
ใบรับรองที่ได้ จะอยู่ใน โฟลเดอร์ certs ซึ่งเราสามารถนำไฟล์ ดังกล่าวออกไปใช้งานกับระบบของเราได้เลย