Skip to main content

signtool ksp และการผสานรวมกับ Windows KSP

signtool ksp จัดการ Windows sslTrus Key Storage Provider (KSP) หลังจากการติดตั้งและกำหนดค่า KSP เสร็จสมบูรณ์ Microsoft signtool.exe สามารถเรียกใช้บริการลงนามระยะไกลผ่าน CNG Provider ได้โดยไม่ต้องเก็บคีย์ส่วนตัวไว้ในเครื่อง

หมายเหตุ

คำสั่งย่อยทั้งหมดของ signtool ksp รองรับเฉพาะแพลตฟอร์ม Windows เท่านั้น หากเรียกใช้คำสั่งย่อยใดๆ ของ ksp บนแพลตฟอร์มที่ไม่ใช่ Windows จะได้รับข้อความดังนี้: key storage provider is only supported on windows


ภาพรวมคำสั่งย่อย

signtool ksp [command]
คำสั่งย่อยวัตถุประสงค์
installติดตั้งและลงทะเบียน KSP DLL
uninstallยกเลิกการลงทะเบียน KSP และลบ DLL
listแสดงรายการการกำหนดค่าคีย์ KSP ที่บันทึกไว้
addเพิ่มการกำหนดค่าคีย์ KSP (แบบโต้ตอบ)
delลบการกำหนดค่าคีย์ KSP ที่ระบุ (แบบโต้ตอบ)
หมายเหตุ

พารามิเตอร์ --address มีผลเฉพาะเมื่อ ksp add เท่านั้น ใช้สำหรับรับ PEM ของใบรับรองและบันทึกที่อยู่บริการระยะไกล


ติดตั้ง KSP

signtool ksp install

หลังการดำเนินการ:

  1. เขียน sslTrusKSP.dll ที่ฝังอยู่ลงใน ProgramData/sslTrusKSP/sslTrusKSP.dll
  2. หากเวอร์ชัน DLL ใน ProgramData แตกต่างจากใน System32 ให้คัดลอก DLL ไปยัง System32
  3. ลงทะเบียน CNG Provider: sslTrus Key Storage Provider
  4. บันทึกไฟล์คอนฟิก KSP ProgramData/sslTrusKSP/config.dat (เข้ารหัสด้วย DPAPI)
หมายเหตุ

install จะแก้ไขการลงทะเบียน CNG Provider ระดับระบบ แนะนำให้ดำเนินการในเทอร์มินัลผู้ดูแลระบบ หากตรวจพบว่าเวอร์ชัน DLL เหมือนกัน จะบันทึก ksp is already installed และส่งค่ากลับทันที


ถอนการติดตั้ง KSP

signtool ksp uninstall

หลังจากการดำเนินการ:

  1. ยกเลิกการลงทะเบียน CNG Provider: sslTrus Key Storage Provider
  2. ลบ ProgramData/sslTrusKSP/sslTrusKSP.dll
  3. ลบ sslTrusKSP.dll ใน System32
คำอธิบาย

uninstall จะไม่ลบไดเรกทอรี ProgramData/sslTrusKSP ทั้งหมด config.dat ไฟล์ใบรับรอง และบันทึกที่บันทึกไว้ต้องทำความสะอาดด้วยตนเอง


ดูการกำหนดค่าคีย์

signtool ksp list

คำอธิบายฟิลด์เอาต์พุต:

ฟิลด์ความหมาย
Noหมายเลขลำดับ
CertCodeหมายเลขใบรับรอง
ServerUrlแสดงเป็น nicsrs หรือ default
AccessKeyAccess Key
AccessSecretAccess Secret ที่ผ่านการปกปิดข้อมูลบางส่วน
หมายเหตุ
  • หากไม่มีไฟล์คอนฟิก ให้คืนค่า no ksp configuration
  • หากมีการกำหนดค่าแต่รายการคีย์ว่างเปล่า ให้บันทึก no ksp key
  • AccessSecret แสดงผลโดยปกปิดข้อมูล แต่ไฟล์กำหนดค่าเองยังต้องจัดการเป็นไฟล์ข้อมูลอ่อนไหว :::

เพิ่มการกำหนดค่าคีย์

signtool ksp add

ระบุที่อยู่ NICSRS:

signtool ksp add --address nicsrs

คำสั่งเป็นแบบโต้ตอบ ให้ป้อนตามลำดับ:

Please enter the access key: your-access-key
Please enter the access secret: your-access-secret
Please enter the certificate code: CERT_CODE

หลังจากการดำเนินการ:

  1. เรียก /v1/codesign/cert ระยะไกลเพื่อดึง PEM ของใบรับรอง
  2. บันทึกใบรับรองเป็น ProgramData/sslTrusKSP/CERT_CODE.crt
  3. เขียนการกำหนดค่าคีย์ลงใน ProgramData/sslTrusKSP/config.dat (เข้ารหัสด้วย DPAPI)

หากหมายเลขใบรับรองมีอยู่แล้ว ระบบจะแจ้งเตือน:

The certificate code already exists, do you want to override it? [y/N]

พิมพ์ y เพื่อเขียนทับ ค่าอื่นหรือกด Enter โดยตรงจะเป็นการยกเลิก

หมายเหตุ

ksp add เป็นคำสั่งแบบโต้ตอบ ปัจจุบันไม่รองรับพารามิเตอร์แบบไม่โต้ตอบ เช่น --access-key, --cert-code การเพิ่มการกำหนดค่าจะเรียกใช้ API ระยะไกล และเขียนใบรับรอง PEM ลงใน ProgramData ภายในเครื่อง


ลบการกำหนดค่าคีย์

signtool ksp del

ป้อนหมายเลขใบรับรองแบบโต้ตอบ:

Please enter the certificate code: CERT_CODE

หลังจากดำเนินการแล้ว ให้ลบการกำหนดค่าคีย์ที่ตรงกันออกจาก config.dat และบันทึกไฟล์การกำหนดค่าที่เข้ารหัสอีกครั้ง

คำอธิบาย

การใช้งานปัจจุบันจะลบเฉพาะรายการกำหนดค่าเท่านั้น ไม่ลบไฟล์ใบรับรอง ProgramData/sslTrusKSP/CERT_CODE.crt


ใช้ Microsoft signtool.exe ผ่าน KSP

หลังจากกำหนดค่า KSP เสร็จแล้ว ให้ใช้ signtool.exe ของ Microsoft ใน Windows SDK เพื่อเรียกใช้ Provider

ข้อควรระวัง

signtool.exe ในคำสั่งต่อไปนี้คือ เครื่องมือที่มาพร้อมกับ Microsoft Windows SDK ไม่ใช่ sslTrus CLI หากทั้งสองมีอยู่ในไดเรกทอรีปัจจุบันหรือ PATH พร้อมกัน โปรดใช้พาธแบบเต็มของ signtool.exe ใน Windows SDK เพื่อหลีกเลี่ยงความสับสน

ตัวอย่างการลงนาม SHA256:

signtool.exe sign /v ^
/csp "sslTrus Key Storage Provider" ^
/kc CERT_CODE ^
/f C:\ProgramData\sslTrusKSP\CERT_CODE.crt ^
/fd SHA256 ^
/tr http://timestamp.acs.microsoft.com ^
/td SHA256 ^
.\EXAMPLE.exe

ตัวอย่างการเพิ่มลายเซ็น SHA1:

signtool.exe sign /v ^
/csp "sslTrus Key Storage Provider" ^
/kc CERT_CODE ^
/f C:\ProgramData\sslTrusKSP\CERT_CODE.crt ^
/fd SHA1 ^
/tr http://timestamp.acs.microsoft.com ^
/td SHA256 ^
/as ^
.\EXAMPLE.exe

คำอธิบายพารามิเตอร์:

พารามิเตอร์ความหมาย
/csp "sslTrus Key Storage Provider"ระบุ KSP Provider ที่ติดตั้งโดย sslTrus
/kc CERT_CODEระบุชื่อคีย์ KSP ซึ่งกำหนดเป็นหมายเลขใบรับรอง
/f C:\ProgramData\sslTrusKSP\CERT_CODE.crtระบุไฟล์ใบรับรองที่บันทึกโดย ksp add
/fd SHA256 หรือ /fd SHA1อัลกอริทึม摘要ไฟล์
/tr <url>บริการประทับเวลา RFC3161
/td SHA256อัลกอริทึม摘要ของการประทับเวลา
/asผนวกลายเซ็น โดยไม่เขียนทับลายเซ็นที่มีอยู่

ข้อมูลอ้างอิงสำหรับการแก้ไขปัญหา

ข้อความข้อผิดพลาดสาเหตุที่เป็นไปได้คำแนะนำในการแก้ไข
key storage provider is only supported on windowsมีการรันคำสั่ง ksp บนแพลตฟอร์มที่ไม่ใช่ Windowsดำเนินการ KSP เฉพาะบน Windows เท่านั้น
no ksp configurationยังไม่ได้สร้างไฟล์คอนฟิก KSPรัน signtool ksp install และ signtool ksp add ก่อน
no such certificate codeหมายเลขใบรับรองที่ต้องการลบไม่มีอยู่ใช้ signtool ksp list เพื่อยืนยันหมายเลขใบรับรอง

ข้อควรระวังด้านความปลอดภัย

  • signtool ksp install และ signtool ksp uninstall จะแก้ไขไดเรกทอรีระบบ Windows และรีจิสทรี CNG Provider ซึ่งโดยปกติต้องใช้สิทธิ์ผู้ดูแลระบบ
  • signtool ksp add จะเข้าถึงอินเทอร์เฟซใบรับรองระยะไกล และเขียนไฟล์ใบรับรองและการกำหนดค่าการเข้ารหัสลงใน ProgramData/sslTrusKSP
  • Access Secret ไฟล์กำหนดค่า KSP และบันทึกภายในเครื่อง ควรปฏิบัติเหมือนข้อมูลละเอียดอ่อน ไม่ควรเขียนลงในบันทึกหรือคลังเวอร์ชัน