คู่มือการใช้งาน CSP
ภาพรวม
คู่มือนี้ใช้สำหรับการกำหนดค่า sslTrus Cryptographic Service Provider (CSP) บน Windows และใช้ signtool.exe ของ Microsoft จาก Windows SDK เพื่อใช้งาน HSM บนคลาวด์ในการลงนามโค้ด
signtool csp ของโปรเจกต์นี้รับผิดชอบการติดตั้ง กำหนดค่า และบำรุงรักษา Provider ส่วนการลงนามจริงจะใช้ signtool.exe จาก Windows SDK ทั้งสองไม่ใช่โปรแกรมเดียวกัน
sslTrus Cryptographic Service Provider เป็น CSP แบบ CryptoAPI ดั้งเดิม เหมาะสำหรับกระบวนการลงนามบน Windows ที่ต้องการเชื่อมต่อผ่าน /csp และ /kc คีย์ส่วนตัวสำหรับการลงนามจะถูกเก็บไว้ใน HSM บนคลาวด์เสมอ บนเครื่อง local จะเก็บเฉพาะ CSP DLL ใบรับรองการลงนาม และการกำหนดค่าการเข้าถึงที่ได้รับการป้องกันโดย Windows DPAPI
การเตรียมตัวก่อนใช้งาน
- ระบบ Windows x64
- เทอร์มินัลที่ทำงานในฐานะผู้ดูแลระบบ สำหรับติดตั้งหรือถอนการติดตั้ง Provider
signtoolCLI ของโปรเจกต์นี้ ซึ่งรวมถึงคำสั่งย่อยcsp- ติดตั้ง Windows SDK แล้ว และสามารถใช้ Microsoft
signtool.exeได้ - Access Key, Access Secret และหมายเลขใบรับรอง (
CERT_CODE) ที่ถูกต้อง - เครือข่ายสามารถเข้าถึงบริการลงนามโค้ดและบริการประทับเวลาที่เลือกได้
ยืนยันว่าเครื่องมือทั้งสองใช้งานได้แยกกัน:
REM 本项目 CLI
signtool csp --help
REM Windows SDK 工具;必要时请使用其完整路径
signtool.exe sign /?
หากมีโปรแกรมชื่อเดียวกันสองรายการอยู่ในไดเรกทอรีปัจจุบันหรือ PATH พร้อมกัน ต้องยืนยันเป้าหมายการเรียกใช้จริงผ่านพาธแบบเต็มหรือ where
เริ่มต้นอย่างรวดเร็ว
ดำเนินการตามลำดับในเทอร์มินัลผู้ดูแลระบบ:
signtool csp install
signtool csp add
signtool csp list
csp add จะโต้ตอบเพื่อขอให้ป้อนข้อมูล:
Please enter the access key: your-access-key
Please enter the access secret: your-access-secret
Please enter the certificate code: CERT_CODE
หลังจากกำหนดค่าเสร็จเรียบร้อยแล้ว ใช้ Microsoft signtool.exe ของ Windows SDK ในการเซ็นชื่อ:
signtool.exe sign /v ^
/csp "sslTrus Cryptographic Service Provider" ^
/kc CERT_CODE ^
/f "C:\ProgramData\sslTrusKSP\CERT_CODE.crt" ^
/fd SHA256 ^
/tr http://timestamp.acs.microsoft.com ^
/td SHA256 ^
".\app.exe"
แทนที่ CERT_CODE และ app.exe ในตัวอย่างด้วยหมายเลขใบรับรองจริงและไฟล์ที่รอการลงนาม
ติดตั้ง Provider
ดำเนินการ:
signtool csp install
คำสั่งนี้จะ:
- เขียน
sslTrusCSP.dllลงใน%ProgramData%\sslTrusKSPและคัดลอกไปยังไดเรกทอรีระบบ - ลงทะเบียน
sslTrus Cryptographic Service Provider(ประเภท Provider เป็นPROV_RSA_AES) - ติดตั้ง KSP DLL ที่เกี่ยวข้อง และลงทะเบียน
sslTrus Key Storage Providerเป็น CNG Provider alias ที่มีชื่อเดียวกันกับ CSP - สร้างหรือบันทึก
%ProgramData%\sslTrusKSP\config.dat; ไฟล์ใช้การเข้ารหัส Windows DPAPI ของเครื่อง-local
การติดตั้งจะแก้ไขการลงทะเบียน Provider ระดับระบบ โดยปกติต้องดำเนินการในเทอร์มินัลผู้ดูแลระบบ หากเวอร์ชันของ CSP DLL ในไดเรกทอรีระบบตรงกับเวอร์ชันที่ฝังอยู่ CLI จะข้ามการคัดลอก CSP DLL แต่ยังคงดำเนินการขั้นตอนการลงทะเบียน Provider
เพิ่มการกำหนดค่าใบรับรอง
ดำเนินการ:
signtool csp add
如需ใช้ที่อยู่บริการ NICSRS:
signtool csp add --address nicsrs
--address ไม่ใช่พารามิเตอร์ส่งผ่าน URL ในปัจจุบัน nicsrs จะใช้บริการ NICSRS ส่วนค่าว่าง racent หรือค่าอื่นจะใช้บริการเริ่มต้น
เมื่อเพิ่มแล้ว CLI จะดึงใบรับรองจากบริการระยะไกล และเขียนลงใน:
%ProgramData%\sslTrusKSP\CERT_CODE.crt
พร้อมกันนี้ให้เขียนที่อยู่บริการ ข้อมูลรับรอง หมายเลขใบรับรอง และพาธของใบรับรองลงในไฟล์การกำหนดค่าแบบเข้ารหัส CERT_CODE เป็นทั้งตัวระบุใบรับรองระยะไกล และเป็นค่าของ /kc ใน signtool.exe ของ Microsoft ในภายหลัง
หากเพิ่มหมายเลขใบรับรองที่มีอยู่แล้ว CLI จะถามว่าจะเขียนทับหรือไม่: ป้อน y เพื่อแทนที่การกำหนดค่าเดิม; กด Enter โดยตรงหรือป้อนค่าอื่นจะคงการกำหนดค่าเดิมไว้
ดูและลบการกำหนดค่า
ดูการกำหนดค่าปัจจุบัน:
signtool csp list
ผลลัพธ์ประกอบด้วยหมายเลขใบรับรอง ประเภทบริการ Access Key และ Access Secret ที่ถูกปกปิดบางส่วน โปรดอย่าอัปโหลดผลลัพธ์จากคำสั่ง ไฟล์คอนฟิก หรือบันทึกไปยังตำแหน่งสาธารณะ
ลบการกำหนดค่าบางรายการ:
signtool csp del
ป้อนหมายเลขใบรับรองตามข้อความแจ้งได้เลย การดำเนินการนี้จะลบเฉพาะรายการที่เกี่ยวข้องในการกำหนดค่าการเข้ารหัสเท่านั้น และจะไม่ลบไฟล์ใบรับรอง .crt ที่มีชื่อเดียวกัน หากไม่ใช้งานแล้ว โปรดลบไฟล์ดังกล่าวด้วยตนเอง
ใช้ Microsoft signtool.exe ในการลงนาม
การลงนาม SHA-256
signtool.exe sign /v ^
/csp "sslTrus Cryptographic Service Provider" ^
/kc CERT_CODE ^
/f "C:\ProgramData\sslTrusKSP\CERT_CODE.crt" ^
/fd SHA256 ^
/tr http://timestamp.acs.microsoft.com ^
/td SHA256 ^
".\app.exe"
คำอธิบายพารามิเตอร์:
| พารามิเตอร์ | คำอธิบาย |
|---|---|
/csp "sslTrus Cryptographic Service Provider" | ระบุ CSP Provider |
/kc CERT_CODE | ระบุ key container ที่สอดคล้องกับหมายเลขใบรับรอง |
/f <证书路径> | ระบุไฟล์ใบรับรองที่ดาวน์โหลดโดย csp add |
/fd SHA256 | ระบุอัลกอริทึมการย่อยไฟล์ |
/tr <URL> | ระบุบริการประทับเวลา RFC 3161 |
/td SHA256 | ระบุอัลกอริทึมการย่อยของการประทับเวลา |
ปัจจุบัน CSP รองรับอัลกอริทึมการแฮชไฟล์ SHA1, SHA256, SHA384 และ SHA512 โดยทั่วไปแล้วสำหรับลายเซ็นใหม่ แนะนำให้ใช้ SHA-256 หรือเวอร์ชันที่สูงกว่า ที่อยู่ timestamp ควรพิจารณาจากนโยบายใบรับรองของคุณและความเข้ากันได้ของแพลตฟอร์มเป้าหมาย
เพิ่มลายเซ็น SHA-1
เมื่อมีความจำเป็นด้านความเข้ากันได้กับระบบเก่าจริง ๆ คุณสามารถเพิ่ม SHA-1 ต่อจากลายเซ็นที่มีอยู่ได้:
signtool.exe sign /v ^
/csp "sslTrus Cryptographic Service Provider" ^
/kc CERT_CODE ^
/f "C:\ProgramData\sslTrusKSP\CERT_CODE.crt" ^
/fd SHA1 ^
/tr http://timestamp.acs.microsoft.com ^
/td SHA256 ^
/as ^
".\app.exe"
/as หมายถึงการผนวกลายเซ็นเพิ่มเติม เพื่อหลีกเลี่ยงการเขียนทับลายเซ็นที่มีอยู่ การต้องใช้ SHA-1 หรือไม่ควรเป็นไปตามระบบเป้าหมายและนโยบายของใบรับรอง ไม่ควรใช้เป็นตัวเลือกเริ่มต้นสำหรับโปรเจกต์ใหม่
ตรวจสอบลายเซ็น
หลังจากการลงนามแล้ว สามารถใช้ Microsoft signtool.exe เพื่อตรวจสอบ:
signtool.exe verify /pa /v ".\app.exe"
หากต้องการตรวจสอบลายเซ็นทั้งหมด สามารถเลือกตัวเลือกการตรวจสอบที่เกี่ยวข้องได้ตามเวอร์ชันและคำอธิบายพารามิเตอร์ของ Windows SDK signtool.exe
ถอนการติดตั้ง Provider
ดำเนินการในเทอร์มินัลของผู้ดูแลระบบ:
signtool csp uninstall
คำสั่งนี้จะยกเลิกการลงทะเบียน CSP รวมถึง CNG Provider alias ที่มีชื่อเดียวกับ CSP และลบสำเนา CSP DLL ใน ProgramData และไดเรกทอรีระบบ โดยจะไม่ลบไดเรกทอรี %ProgramData%\sslTrusKSP ทั้งหมด และไม่นำการลงทะเบียนและ DLL ของ sslTrus Key Storage Provider ที่เกี่ยวข้องออกโดยอัตโนมัติ หาก KSP นี้ใช้งานเฉพาะในขั้นตอนการติดตั้ง CSP โปรดพิจารณาทำความสะอาดอย่างรอบคอบตามสถานะการปรับใช้จริง
หลังถอนการติดตั้ง หากต้องการนำข้อมูลละเอียดอ่อนในเครื่องออก โปรดลบการกำหนดค่า ใบรับรอง และบันทึกใน %ProgramData%\sslTrusKSP ด้วยตนเอง หลังจากยืนยันว่าไม่ถูกใช้งานโดย KSP หรือกระบวนการลงนามอื่นอีกต่อไป
คำถามที่พบบ่อย
| อาการ | คำแนะนำในการจัดการ |
|---|---|
cryptographic service provider is only supported on windows | เรียกใช้คำสั่งจัดการ CSP บน Windows |
| ติดตั้งแล้วพบข้อผิดพลาดสิทธิ์หรือเขียนไดเรกทอรีระบบล้มเหลว | ใช้เทอร์มินัลผู้ดูแลระบบเพื่อเรียกใช้ signtool csp install |
no csp configuration | เรียกใช้ signtool csp install ก่อน จากนั้นจึงเรียกใช้ signtool csp add |
no such certificate code | ใช้ signtool csp list เพื่อตรวจสอบหมายเลขใบรับรองก่อน |
Microsoft signtool.exe ไม่พบ Provider | ยืนยันว่าคำสั่งติดตั้งสำเร็จ เครื่องมือปัจจุบันและ Provider เป็น x64 และเปิดเทอร์มินัลใหม่ก่อนลองอีกครั้ง |
| ไม่พบไฟล์ใบรับรองตอนลงนาม | ยืนยันว่าเส้นทาง /f ตรงกับ CERT_CODE.crt ที่ดาวน์โหลดจาก csp add |
| การเรียกลงนามล้มเหลว | ตรวจสอบหมายเลขใบรับรอง ข้อมูลรับรองบริการ และการเชื่อมต่อเครือข่าย แล้วดู %ProgramData%\sslTrusKSP\sslTrusCSP.log |
| ใช้ที่อยู่บริการแบบกำหนดเองแต่คำร้องขอผิดปกติ | CSP เรียกใช้เส้นทาง /v1/codesign/sign แบบคงที่ของบริการคำร้องขอ ที่อยู่บริการที่กำหนดค่าไว้ควรให้เฉพาะ http(s)://host[:port] เท่านั้น |
ข้อแนะนำด้านความปลอดภัย
- Access Secret,
config.dat, ไฟล์ใบรับรอง และบันทึก CSP ควรปฏิบัติเหมือนข้อมูลละเอียดอ่อน config.datได้รับการป้องกันโดย DPAPI ของ Windows user profile ปัจจุบันที่สร้างการกำหนดค่าไว้ จึงไม่ควรคัดลอกไปยังผู้ใช้หรือเครื่องอื่นเพื่อใช้ซ้ำโดยตรง- CSP ไม่บันทึกคีย์ส่วนตัว อย่าพยายามนำเข้าคีย์ส่วนตัวไปยัง
%ProgramData%\sslTrusKSP - การลงนามของ CSP ต้องเข้าถึงบริการระยะไกล การหมดเวลาเครือข่าย การปฏิเสธจากฝั่งเซิร์ฟเวอร์ หรือบริการ timestamp ไม่พร้อมใช้งาน ล้วนอาจทำให้การลงนามล้มเหลว
สำหรับพารามิเตอร์ CLI และคำสั่งการลงนามเพิ่มเติม โปรดดู ข้อมูลอ้างอิงคำสั่ง SignTool sign