Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ETDA Development Guideline : ขมธอ.11 - ELECTRONIC CERTIFICATE

คู่มือชุดคำสั่งและแนวทางการพัฒนาระบบการสร้างเอกสารรับรองอิเล็กทรอนิกส์ในรูปแบบ Hybrid PDF/A-3 ตามมาตรฐาน ขมธอ.11 (ETDA Standard) เพื่อสนับสนุนการเปลี่ยนผ่านสู่ดิจิทัลอย่างมั่นคงปลอดภัย


1. บทนำ (Introduction)

โครงการนี้จัดทำขึ้นเพื่อเป็น Starter Kit สำหรับนักพัฒนา เพื่อใช้ศึกษาและเริ่มต้นสร้างเอกสารอิเล็กทรอนิกส์ที่มีความน่าเชื่อถือสูง โดยรวมคุณสมบัติสำคัญตามมาตรฐาน ETDA ไว้ในที่เดียว:

  • Human-Readable: ไฟล์ PDF ที่มนุษย์อ่านได้และพิมพ์ออกมาได้
  • Machine-Readable: ข้อมูลโครงสร้าง (XML/JSON) ที่ฝังอยู่ในไฟล์เพื่อให้ระบบคอมพิวเตอร์ประมวลผลต่อได้ทันที
  • Digital Trust: การลงนามดิจิทัล (PAdES) และการตรวจสอบสถานะใบรับรองระยะยาว (LTV)

2. ขั้นตอนการติดตั้งและเริ่มต้นใช้งาน (Installation)

2.1 ความต้องการของระบบ

  • Node.js: เวอร์ชั่น 16 ขึ้นไป
  • NPM: จัดการ Dependencies

2.2 การติดตั้ง

  1. แตกไฟล์โครงการหรือ clone repository
  2. เปิด Terminal ในโฟลเดอร์โครงการแล้วรันคำสั่ง:
    npm install
  3. เริ่มต้นรันเซิร์ฟเวอร์:
    node src/server.js
  4. เข้าใช้งานผ่าน Browser: เปิดไปที่ http://localhost:3000

3. การทดลองใช้งานระบบ (Simulation Guide)

ในหน้า Playground คุณสามารถทดลองกระบวนการทำงานได้ดังนี้:

  1. เลือกประเภทเอกสาร: ระบบมีข้อมูลตัวอย่าง (JSON) ของใบรับรองผลการเรียน (Transcript) และใบกำกับภาษี (Invoice)
  2. สร้างและลงนาม PDF:
    • มี 3 รูปแบบ: ลงนามปกติ, ลงนามพร้อม LTV, และแบบครบวงจร (LTV + QR Code)
  3. ตรวจสอบผลลัพธ์: ดูไฟล์ PDF ในตัวอย่าง และตรวจสอบไฟล์ที่ฝังอยู่ (Attached Files)
  4. การตรวจสอบความถูกต้อง (Verification):
    • Online: ตรวจสอบสถานะใบรับรองและ Integrity ของไฟล์
    • Offline (QR Code): จำลองการสแกนด้วยสมาร์ทโฟนเพื่อตรวจสอบข้อมูลสำคัญโดยไม่ต้องเชื่อมต่ออินเทอร์เน็ต
  5. การสกัดข้อมูล (Data Extraction): ทดลองดึงไฟล์ XML/JSON ออกจาก PDF เพื่อนำไปใช้ในระบบงานอื่น

4. คู่มือสำหรับนักพัฒนา (Developer Guide)

หากคุณต้องการนำฟีเจอร์ต่างๆ ไปใช้งานในระบบของคุณ สามารถศึกษาได้จากโครงสร้างไฟล์ดังนี้:

🛠 การสร้างไฟล์ Hybrid PDF/A-3

  • ไฟล์ที่เกี่ยวข้อง: src/services/PdfGenerator.js
  • วิธีใช้: ใช้ฟังก์ชัน createBasePDF เพื่อสร้างหน้าเอกสาร และ createHybridPDF เพื่อฝังไฟล์ XML/JSON ลงไปโดยกำหนด afRelationship ตามมาตรฐาน

🏷 การลงนามดิจิทัล (PAdES & LTV)

  • ไฟล์ที่เกี่ยวข้อง: src/services/DigitalSigner.js
  • วิธีใช้:
    • signPDF: ใช้สำหรับลงนามดิจิทัลบน PDF
    • applyLTV: (ใน PdfGenerator.js) ใช้สำหรับฝังข้อมูล DSS (Certs, OCSP, CRL) เพื่อให้ตรวจสอบลายเซ็นได้ในระยะยาวแม้ใบรับรองหมดอายุ

🔍 การตรวจสอบ (Verification)

  • ไฟล์ที่เกี่ยวข้อง:
    • src/services/VerificationService.js: ตรวจสอบสถานะลายเซ็นดิจิทัล (PKCS#7)
    • src/services/VerificationQrService.js: จัดการการสร้างและตรวจสอบ QR Code แบบ Compact (CBOR/Base45) สำหรับการตรวจสอบแบบออฟไลน์

🎭 การปกปิดข้อมูล (Data Masking)

  • ไฟล์ที่เกี่ยวข้อง: src/services/MaskingService.js
  • วิธีใช้: ใช้ฟังก์ชัน applyMasking(input, start, mid, end) เพื่อทำ Masking ข้อมูลส่วนบุคคล (PDPA) เช่น เลขบัตรประชาชน หรือเบอร์โทรศัพท์ ก่อนนำไปแสดงผลหรือประมวลผล

5. สรุปความสัมพันธ์ของคำสั่ง (Code Mapping)

หากคุณต้องการ... ต้องหยิบ Code จากไฟล์... ฟังก์ชันหลัก
สร้างโครงสร้าง PDF src/services/PdfGenerator.js createBasePDF()
ฝังไฟล์ XML/JSON ใน PDF src/services/PdfGenerator.js createHybridPDF()
ลงนามดิจิทัล (Sign) src/services/DigitalSigner.js signPDF()
ทำระบบตรวจสอบออฟไลน์ src/services/VerificationQrService.js generateVerificationQr()
ตรวจสอบลายเซ็นดั้งเดิม src/services/VerificationService.js verifySignature()
ทำ Data Masking (PDPA) src/services/MaskingService.js applyMasking()

6. การตั้งค่า Adobe Acrobat ให้เป็น "สีเขียว" (Trust Guide)

เนื่องจากระบบใช้ใบรับรองจำลอง (Self-signed) สำหรับการพัฒนา Adobe Acrobat จะแสดงสถานะเป็น "Validity Unknown" (เครื่องหมายคำถามสีเหลือง) เป็นปกติ จนกว่าเราจะติตตั้งใบรับรองให้เครื่องเชื่อถือ:

  1. ดาวน์โหลดใบรับรอง: คลิกปุ่ม "Download Certificate (.crt)" จากหน้าจอหลักของระบบ
  2. ติดตั้งความเชื่อถือ (Manual Trust):
    • เปิดไฟล์ PDF ที่สร้างขึ้นด้วย Adobe Acrobat
    • คลิกขวาที่ลายเซ็น -> เลือก Show Signature Properties
    • คลิกปุ่ม Show Signer's Certificate
    • ไปที่แถบ Trust -> คลิก Add to Trusted Certificates... -> กด OK
    • ติ๊กถูกที่ช่อง Certified documents และอีก 3 ช่องย่อยด้านล่าง (Dynamic content, Embedded JavaScript, Cross-domain browser) ให้ครบ
    • กด OK ทุกหน้าจนจบ
  3. ตรวจสอบใหม่: ปิดไฟล์ PDF และเปิดใหม่อีกครั้ง ลายเซ็นควรแสดงเป็น "Signature is VALID" (เครื่องหมายถูกสีเขียว)

Tip

หากสถานะยังเป็น "สีแดง" (INVALID) แม้จะกด Trust แล้ว: ให้ตรวจสอบว่าได้ติดตั้งใบรับรองเวอร์ชั่นล่าสุดจากระบบหรือไม่ (หากมีการรันเซิร์ฟเวอร์ใหม่ ระบบอาจสร้างกุญแจชุดใหม่ขึ้นมา)


⚠️ ข้อสงวนสิทธิ์และเงื่อนไขการใช้งาน (Disclaimer)

โครงการนี้ (Source Code) จัดทำขึ้นโดย สำนักงานพัฒนาธุรกรรมทางอิเล็กทรอนิกส์ (สพธอ. หรือ ETDA) โดยมีวัตถุประสงค์เพื่อเป็น "ตัวอย่างเพื่อการศึกษาและเป็นวิทยาทาน (Educational Purposes Only)" ในการส่งเสริมและให้ความรู้เกี่ยวกับการสร้างมาตรฐานเอกสารอิเล็กทรอนิกส์ของประเทศไทยเท่านั้น

ทาง ETDA เปิดกว้างให้ประชาชนและภาคธุรกิจสามารถนำ Source Code นี้ไปศึกษา ดัดแปลง หรือต่อยอดได้ภายใต้สัญญาอนุญาต MIT License อย่างไรก็ตาม ผู้ที่นำไปใช้งานต้องรับทราบและยินยอมเงื่อนไขดังต่อไปนี้:

  1. ใช้งานตามสภาพ (AS IS): โครงการนี้เป็นการนำเทคโนโลยีและ Open Source ต่างๆ มาประกอบเป็นตัวอย่างการทำงาน ETDA ไม่รับประกันความสมบูรณ์ ความถูกต้อง หรือความปลอดภัยของ Source Code นี้สำหรับการนำไปใช้งานจริงบนระบบ Production
  2. ปฏิเสธความรับผิดชอบในทุกกรณี: หากเกิดความเสียหายใดๆ ขึ้นจากการนำโค้ดนี้ไปใช้งาน ไม่ว่าจะเป็นความเสียหายทางธุรกิจ การสูญหายของข้อมูล ข้อผิดพลาดของระบบ (Bugs) หรือ การถูกร้องเรียนเรื่องการละเมิดลิขสิทธิ์/สิทธิบัตรจากบุคคลที่สาม ทาง ETDA จะไม่รับผิดชอบหรือชดใช้ค่าเสียหายในทุกกรณี
  3. หน้าที่ของผู้ใช้งาน: ผู้ที่นำ Source Code นี้ไปใช้ มีหน้าที่ต้องตรวจสอบ ทดสอบ ปรับปรุง และประเมินความเสี่ยง รวมถึงตรวจสอบสิทธิ์การใช้งาน (License) ของไลบรารีต่างๆ ที่เชื่อมต่ออยู่ ให้เหมาะสมและถูกต้องตามกฎหมายก่อนนำไปใช้งานในธุรกิจของตนเองอย่างแท้จริง

พัฒนาโดย ETDA Standard Development Team | อ้างอิงมาตรฐาน ขมธอ.11

About

PDF Advanced Electronic Signatures (PAdES); PAdES basic profiles (ครอบคลุมการประทับรับรองความถูกต้องระยะยาว หรือ LTV)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages