วิธีขอและใช้งานใบรับรองการลงนามโค้ดของ ServBay
ภาพรวม
ระหว่างขั้นตอนการพัฒนาและจัดจำหน่ายซอฟต์แวร์ การลงนามโค้ดถือเป็นขั้นตอนสำคัญที่สร้างความเชื่อมั่นและความสมบูรณ์ให้กับซอฟต์แวร์ ด้วยการใช้ลายเซ็นดิจิทัล นักพัฒนาสามารถพิสูจน์แหล่งที่มาของซอฟต์แวร์และยืนยันได้ว่าโค้ดยังคงเดิมไม่ถูกแก้ไขนับตั้งแต่ถูกลงนาม
ServBay มอบความสะดวกให้นักพัฒนาในการขอและใช้งานใบรับรองการลงนามโค้ดที่ออกโดย CA ภายในของ ServBay ในสภาพแวดล้อมท้องถิ่น ใบรับรองเหล่านี้เหมาะสำหรับการใช้งานดังนี้:
- ลงนามโค้ดสำหรับซอฟต์แวร์ที่กำลังพัฒนา/ทดสอบเพื่อจำลองกระบวนการเซ็นโค้ดจริง
- ใช้ลงนามให้กับสคริปต์ เครื่องมือ หรือแอปพลิเคชันภายในองค์กร เพื่อยืนยันแหล่งที่มาและความสมบูรณ์ของโค้ดในทีม หรือสภาพแวดล้อมที่เชื่อถือได้
- ศึกษาและฝึกปฏิบัติกระบวนการลงนามโค้ดอย่างสมบูรณ์ โดยไม่จำเป็นต้องซื้อใบรับรองเซ็นโค้ดเชิงพาณิชย์ราคาแพง
ข้อควรระวัง: ใบรับรองเซ็นโค้ดที่ออกโดย CA ภายในของ ServBay ไม่ใช่ ใบรับรองที่ออกโดยหน่วยงาน CA สาธารณะที่ได้รับความเชื่อถือโดยทั่วไป (เช่น Let's Encrypt, Comodo ฯลฯ) ดังนั้นใบรับรองเหล่านี้ จะไม่ได้รับความเชื่อถือโดยค่าเริ่มต้น จากระบบปฏิบัติการหรือเบราว์เซอร์สาธารณะ ดังนั้นไม่ควรใช้ใบรับรองนี้กับกรณีที่ต้องการความเชื่อถือสาธารณะ เช่น การแจกจ่ายซอฟต์แวร์เชิงพาณิชย์ให้ผู้ใช้ปลายทาง การนำขึ้น App Store หรือซอฟต์แวร์ที่ต้องผ่านการตรวจสอบความปลอดภัยของ OS (เช่น macOS Gatekeeper แจ้งเตือน Unknown Developer) เหมาะสำหรับการใช้งานในสภาพแวดล้อมทดสอบหรือภายในองค์กรเป็นหลัก
แนะนำใบรับรองการลงนามโค้ด
ใบรับรองการลงนามโค้ดเป็นใบรับรองดิจิทัลที่ใช้สร้างลายเซ็นดิจิทัลให้กับไฟล์ executable, สคริปต์, ไลบรารี และโค้ดซอฟต์แวร์อื่น ๆ จุดประสงค์หลักของใบรับรองนี้คือการสร้างความเชื่อมั่นและความปลอดภัย ดังนี้:
- ยืนยันตัวตนผู้เผยแพร่ซอฟต์แวร์: ใบรับรองจะบรรจุข้อมูลของผู้ออกหรือองค์กรผู้พัฒนา ลายเซ็นดิจิทัลช่วยให้มั่นใจได้ซอฟต์แวร์มาจากแหล่งที่ระบุในใบรับรอง
- ป้องกันการแก้ไขโค้ด (Code Integrity): ขั้นตอนการลงนามจะสร้างค่าแฮชจากเนื้อหาโค้ดแล้วเข้ารหัสด้วย private key ขณะตรวจสอบก็จะคำนวณค่าแฮชใหม่และถอดรหัสค่าที่ฝังมากับลายเซ็น เทียบกัน หากไม่ตรงกันแสดงว่ามีการแก้ไขโค้ดและการตรวจสอบล้มเหลว
- เพิ่มความมั่นใจแก่ผู้ใช้: ระบบปฏิบัติการหรือซอฟต์แวร์ด้านความปลอดภัยมักจะแจ้งเตือนหากซอฟต์แวร์ไม่ถูกลงนามหรือมาจากแหล่งที่ไม่น่าเชื่อถือ การใช้ใบรับรองเซ็นโค้ดสามารถช่วยกำจัดข้อสงสัยเหล่านี้ (ในสภาพแวดล้อมที่เชื่อถือ หรือเมื่อ CA ของ ServBay ถูกเพิ่มลงใน Chain of Trust)
- ต้านไวรัสและมัลแวร์: การลงนามโค้ดช่วยให้ผู้ใช้แยกแยะซอฟต์แวร์แท้จากมัลแวร์ที่แอบอ้างได้ง่ายขึ้น ลดความเสี่ยงจากมัลแวร์
วิธีขอใบรับรองการลงนามโค้ดจาก ServBay
ServBay ได้ทำให้กระบวนการขอใบรับรองเซ็นโค้ดในสภาพแวดล้อมท้องถิ่นง่ายขึ้นมาก
เปิดแผงจัดการใบรับรอง SSL:
ไปที่แอป ServBay แล้วคลิกเมนู "SSL Certificates" ที่แถบด้านข้างเริ่มขอใบรับรองใหม่:
ที่หน้าจัดการใบรับรอง SSL ให้คลิกปุ่ม "+" (เพิ่มใบรับรอง) ด้านขวาบนกรอกข้อมูลใบรับรอง:
ในหน้า "Request Certificate" จำเป็นต้องกรอกข้อมูลตามนี้:- Common Name (ชื่อทั่วไป): ระบุชื่อองค์กรหรือชื่อส่วนตัวคุณ เช่น
ServBay, LLC
หรือServBay Demo Developer
- Usage Purpose (วัตถุประสงค์การใช้): เลือก
Code Signing
(การลงนามโค้ด) - Request Method (วิธีขอรับ): เลือก
ServBay CA
เพื่อใช้งาน CA ภายในของ ServBay - Issuer (ผู้ออกใบรับรอง): เลือก CA ภายในสำหรับออกใบรับรองนี้ โดยทั่วไปจะเลือก
ServBay User CA
- Algorithm (อัลกอริทึม): เลือกอัลกอริทึมสร้างคีย์ เช่น
ECC
(Elliptic Curve) หรือRSA
(Rivest-Shamir-Adleman) โดยECC
ให้ความปลอดภัยสูงและใช้คีย์ขนาดสั้นกว่า - Key Length (ความยาวคีย์): เลือกความยาวคีย์ตามอัลกอริทึม ECC เช่น
384
, RSA เช่น2048
หรือ4096
คีย์ยิ่งยาวยิ่งปลอดภัยแต่ประมวลผลจะช้าลง - Password (รหัสผ่าน): สำคัญมาก! ตั้งรหัสผ่านที่แข็งแรงเพื่อปกป้อง private key ของใบรับรองคุณ รหัสผ่านนี้จะต้องใช้ขณะส่งออกไฟล์ใบรับรอง (
.p12
) และตอนใช้งานกับเครื่องมือลงนามโค้ด กรุณาจำรหัสผ่านไว้ให้ดี เพราะ ServBay ไม่สามารถกู้คืนรหัสผ่านนี้ให้ได้
คุณควรตั้งรหัสผ่านเฉพาะของตัวเอง (ตัวอย่างในภาพหน้าจอServBay.dev
เป็นรหัสผ่านตัวอย่างเท่านั้น ห้ามใช้รหัสอ่อนแอนี้ในการใช้งานจริง)
ภาพหน้าจอตัวอย่าง โปรดใช้ข้อมูลของคุณเองในการกรอก
- Common Name (ชื่อทั่วไป): ระบุชื่อองค์กรหรือชื่อส่วนตัวคุณ เช่น
ส่งคำขอใบรับรอง:
เมื่อตรวจสอบข้อมูลครบถ้วนแล้ว ให้คลิกปุ่ม "Request" ที่ด้านล่าง ServBay จะใช้ ServBay User CA อัตโนมัติในการออกใบรับรองเซ็นโค้ดให้คุณ
การส่งออกและใช้งานใบรับรอง
หลังจากขอรับใบรับรองเซ็นโค้ดเรียบร้อยแล้ว คุณจำเป็นต้องส่งออกใบรับรองไปเป็นไฟล์มาตรฐานเพื่อใช้งานกับเครื่องมือลงนามโค้ดต่าง ๆ โดย ServBay จะส่งออกในรูปแบบไฟล์ .p12
(PKCS#12) เป็นหลัก
ไปที่แผงจัดการใบรับรอง SSL:
คลิก "SSL Certificates" ที่แถบด้านข้างของ ServBayค้นหาใบรับรองเซ็นโค้ดของคุณ:
ดูในรายชื่อใบรับรอง แล้วหาใบรับรองที่ใช้เพื่อ "Code Signing" ที่คุณเพิ่งขอคลิกส่งออก:
ที่รายการใบรับรองนั้น คลิกไอคอนส่งออกทางขวา (มักเป็นไอคอนลูกศรชี้ขวา)เลือกโฟลเดอร์ปลายทางและตั้งรหัสผ่าน:
กำหนดโฟลเดอร์ปลายทางในหน้าต่างส่งออก เลือกไฟล์แบบ.p12
ซึ่งประกอบด้วยทั้งใบรับรองและ private key จึงต้องตั้งรหัสผ่านป้องกัน โดยใช้รหัสผ่านที่คุณตั้งไว้ตอนขอใบรับรองใช้งานไฟล์กับเครื่องมือลงนามโค้ด:
นำไฟล์.p12
ที่ส่งออกแล้วนำเข้าไปยังเครื่องมือลงนามโค้ดที่ต้องการ โดยมีรายละเอียดแต่ละระบบดังนี้:- macOS: ใช้คำสั่ง
codesign
(CLI) ควรนำเข้าไฟล์.p12
เข้าสู่ Keychain Access ของ macOS ก่อน - Windows: ใช้คำสั่ง
signtool.exe
(CLI) จาก Windows SDK ควรนำเข้าไฟล์.p12
ไปที่ Certificate Manager ของ Windows - ระบบอื่น / Toolchain อื่น: ดูวิธีการ import และ signing ตามระบบ เช่น Java ใช้
jarsigner
, .NET ใช้SignTool
, Go อาจมี third-party tool ฯลฯ โดยส่วนใหญ่จะใช้ไฟล์.p12
และรหัสผ่าน private key เหมือนกัน
- macOS: ใช้คำสั่ง
เมื่อนำเข้าใบรับรองเรียบร้อย คุณก็สามารถใช้สำหรับเซ็นโค้ด, แอปพลิเคชัน หรือไดรเวอร์ได้ทันที
ตัวอย่างการใช้ใบรับรองเซ็นโค้ดเพื่อเซ็นไฟล์ (macOS)
ตัวอย่างนี้จะแสดงวิธีใช้ codesign
บน macOS ร่วมกับใบรับรอง .p12
ที่ได้จาก ServBay เพื่อเซ็นและตรวจสอบไฟล์ไบนารีอย่างง่าย
สมมุติว่าคุณนำเข้าไฟล์ .p12
ไปที่ Keychain Access ของ macOS เรียบร้อยแล้ว พร้อมใส่รหัสผ่านถูกต้อง
bash
# 1. สร้างไฟล์ทดสอบโค้ดภาษา C ง่าย ๆ เพื่อทดลองเซ็น
# เซฟเนื้อหาด้านล่างเป็น test.c
cat <<EOF > test.c
#include <stdio.h>
int main() {
printf("Hello, ServBay Code Signing!\n");
return 0;
}
EOF
# 2. คอมไพล์ไฟล์ C เป็นไฟล์ executable ชื่อ /tmp/test
gcc test.c -o /tmp/test
echo "คอมไพล์สำเร็จ สร้างไฟล์ /tmp/test"
# 3. ค้นหารายชื่อใบรับรอง (Identity) ที่ใช้ได้สำหรับการเซ็นโค้ด
# -v แสดงรายละเอียด
# -p codesigning กรองเฉพาะสำหรับลงนามโค้ด
security find-identity -v -p codesigning
# ตัวอย่างผลลัพธ์อาจเป็นแบบนี้:
# 1) ABCDEF1234567890ABCDEF1234567890ABCDEF12 "Apple Development: Your Name (XYZ123)"
# 2) 99C183BC3796067FAFBA6F232D1C3C3425DAABDA "ServBay Demo Developer"
# 2 valid identities found
# จดจำ Common Name หรือ hash value ของใบรับรอง ServBay ("ServBay Demo Developer")
# 4. ใช้ใบรับรองที่ได้มาเซ็นไฟล์
# -f บังคับเซ็น (ถ้าไฟล์ถูกเซ็นแล้วจะทับ)
# -s กำหนด identity (hash หรือ Common Name)
# --timestamp เพิ่ม timestamp สำหรับตรวจสอบความถูกต้องเวลาเซ็น (แนะนำ)
codesign -f -s "ServBay Demo Developer" --timestamp /tmp/test
# หรือใช้ hash:
# codesign -f -s "99C183BC3796067FAFBA6F232D1C3C3425DAABDA" --timestamp /tmp/test
echo "/tmp/test ถูกเซ็นด้วยใบรับรองเรียบร้อย"
# 5. ตรวจสอบความถูกต้องของลายเซ็น
# -dvvv แสดงรายละเอียดมากที่สุด
codesign -dvvv /tmp/test
# ดูที่ช่อง "Authority" ต้องแสดงข้อมูลใบรับรองและ chain ของ ServBay CA
# ดู "Signature size", "CDHash" และ "Timestamp" ว่ามีแสดงครบ
# ตัวอย่างผลลัพธ์:
# Authority=ServBay Demo Developer
# Authority=ServBay User CA - ECC Code Signing
# Authority=ServBay Public CA - ECC Root
# Timestamp=Nov 7, 2024 at 18:26:48 (วันที่ตัวอย่าง)
# 6. ทดลองเปลี่ยนเนื้อหา ทำให้ signature เสีย
# เขียนข้อมูลทับบางส่วนในไฟล์เพื่อเปลี่ยนค่า hash
echo "abcde" >> /tmp/test
echo "/tmp/test ถูกแก้ไขแล้ว"
# 7. ตรวจสอบ signature อีกครั้ง
# ผลลัพธ์ควรแจ้งว่าตรวจสอบไม่ผ่าน
codesign -dvvv /tmp/test
# ผลลัพธ์ตัวอย่าง:
# /tmp/test: code object is not signed at all
# หรือ error อื่น ๆ ว่า signature ใช้ไม่ได้ (เพราะไฟล์ถูกเปลี่ยน)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
หมายเหตุ:
security find-identity
ใช้ค้นหาใบรับรองที่สามารถใช้ลงนามโค้ดใน Keychaincodesign -f -s "Your Identity"
คือการรันคำสั่งเซ็นไฟล์จริง --timestamp จะติดต่อ timestamp server เพื่อระบุเวลาที่เซ็น แม้ใบรับรองหมดอายุในภายหลังก็ยังนับว่าลายเซ็นถูกต้องcodesign -dvvv
ใช้ตรวจสอบความสมบูรณ์ของลายเซ็น โครงสร้าง chain, ข้อมูล authority และค่า hash ต้องตรง- การแก้ไขไฟล์แล้วตรวจสอบไม่ผ่านในข้อสุดท้าย แสดงให้เห็นถึงหัวใจสำคัญของ code signing นั่นคือ ความสมบูรณ์ของโค้ด (integrity)
การต่ออายุใบรับรอง
ใบรับรองการลงนามโค้ดที่ออกโดย ServBay มีอายุการใช้งานที่จำกัด (ปกติ 800 วัน) ก่อนหมดอายุสามารถต่ออายุใหม่ได้ในแผงจัดการใบรับรอง SSL
- เข้าสู่แผงจัดการใบรับรอง SSL
- ค้นหาใบรับรองเซ็นโค้ดที่ต้องการต่ออายุ
- คลิกปุ่มต่ออายุ:
ทางขวาของรายการใบรับรองจะมีไอคอนลูกศรวน (ต่ออายุ) - ยืนยันการต่ออายุ:
หลังจากคลิก ระบบจะออกใบรับรองใหม่โดยเริ่มนับอายุใหม่ 800 วันนับจากวันที่ต่ออายุ
การลบใบรับรอง
หากไม่ต้องการใช้ใบรับรองการเซ็นโค้ดใด ๆ อีก คุณสามารถลบออกจากระบบ ServBay ได้
- เข้าสู่แผงจัดการใบรับรอง SSL
- ค้นหาใบรับรองที่ต้องการลบ
- คลิกปุ่มลบ:
คลิกไอคอนถังขยะทางขวาของแต่ละแถว - ยืนยันการลบ:
ที่เมนูยืนยัน ให้เลือก "Delete" แล้วยืนยันอีกครั้ง หลังการลบใบรับรองจะไม่สามารถกู้คืนได้
คำถามที่พบบ่อย (FAQ)
ถาม: ใบรับรองเซ็นโค้ดที่ออกโดย ServBay ให้ใช้ฟรีหรือไม่?
ตอบ: ฟรี ใบรับรองจาก CA ภายในของ ServBay นี้เป็นฟีเจอร์ Built-in ของ ServBay ไม่มีค่าใช้จ่ายเพิ่มเติม
ถาม: สามารถใช้ใบรับรองที่ออกโดย ServBay เซ็นซอฟต์แวร์เชิงพาณิชย์และแจกจ่ายผู้ใช้ทั่วไปได้ไหม?
ตอบ: ไม่ได้ ใบรับรองที่ออกโดย CA ภายในของ ServBay ไม่ได้รับการยอมรับจาก OS หรือ App store ใด ๆ โดยอัตโนมัติ จึงควรใช้เฉพาะในสภาพแวดล้อมท้องถิ่น ทดสอบ หรือภายในองค์กรเท่านั้น กรณีซอฟต์แวร์จะแจกจ่ายสาธารณะ ต้องซื้อใบรับรองจาก CA ที่ได้รับความเชื่อถือสาธารณะ
ถาม: ลืมรหัสผ่านที่ตั้งไว้ตอนส่งออกไฟล์ .p12
ทำอย่างไร?
ตอบ: ServBay ไม่เก็บรหัสผ่าน Private Key หากลืมแล้ว จะใช้หรือส่งออกไฟล์นี้ไม่ได้ ต้องลบใบรับรองและขอใหม่เท่านั้น
ถาม: สามารถเพิ่ม ServBay User CA ลงใน Store ความเชื่อถือของระบบปฏิบัติการได้หรือไม่?
ตอบ: ได้ โดยต้องส่งออกใบรับรอง ServBay User CA แล้วนำไป Import ที่ Trust Store ของ OS หรือ Browser ด้วยตนเอง
สรุป
ฟีเจอร์ใบรับรองการลงนามโค้ดของ ServBay คือเครื่องมืออำนวยความสะดวกสำหรับนักพัฒนาในการทดสอบการเซ็นซอฟต์แวร์และเครื่องมือใช้งานภายใน สะดวกและเหมาะสมกับสภาพแวดล้อมพัฒนาและทดสอบเท่านั้น หลีกเลี่ยงการใช้ในกรณีต้องการความเชื่อถือสาธารณะ
หากพบปัญหาในการขอหรือใช้งานใบรับรอง สามารถศึกษาจากคู่มือฉบับทางการของ ServBay หรือสอบถามชุมชนผู้ใช้เพิ่มเติม