Chuyển tới nội dung chính

Tích hợp signtool ksp với Windows KSP

signtool ksp quản lý Windows sslTrus Key Storage Provider (KSP).Sau khi cài đặt và cấu hình KSP hoàn tất, Microsoft signtool.exe có thể gọi dịch vụ ký từ xa thông qua CNG Provider mà không cần lưu giữ khóa riêng tư cục bộ.

Lưu ý

signtool ksp tất cả lệnh con chỉ hỗ trợ nền tảng Windows. Thực thi bất kỳ lệnh con ksp nào trên nền tảng không phải Windows sẽ trả về: key storage provider is only supported on windows


Tổng quan về lệnh con​

signtool ksp [command]
Lệnh conMục đích
installCài đặt và đăng ký KSP DLL
uninstallHủy đăng ký KSP và xóa DLL
listLiệt kê cấu hình khóa KSP đã lưu
addThêm cấu hình khóa KSP mới (tương tác)
delXóa cấu hình khóa KSP được chỉ định (tương tác)
Ghi chú

Tham số --address chỉ có hiệu lực khi ksp add, dùng để lấy PEM chứng chỉ và lưu địa chỉ dịch vụ từ xa.


Cài đặt KSP​

signtool ksp install

Sau khi thực thi:

  1. Ghi sslTrusKSP.dll được nhúng vào ProgramData/sslTrusKSP/sslTrusKSP.dll.
  2. Nếu phiên bản DLL trong ProgramData khác với trong System32, hãy sao chép DLL vào System32.
  3. Đăng ký CNG Provider: sslTrus Key Storage Provider.
  4. Lưu tệp cấu hình KSP ProgramData/sslTrusKSP/config.dat (mã hóa DPAPI).
Lưu ý

install sẽ sửa đổi đăng ký CNG Provider cấp hệ thống, khuyến nghị thực thi trong terminal quản trị viên. Nếu phát hiện phiên bản DLL giống nhau, sẽ ghi lại ksp is already installed và trả về trực tiếp.


Gỡ cài đặt KSP​

signtool ksp uninstall

Sau khi thực thi:

  1. Hủy đăng ký CNG Provider: sslTrus Key Storage Provider.
  2. Xóa ProgramData/sslTrusKSP/sslTrusKSP.dll.
  3. Xóa sslTrusKSP.dll trong System32.
Ghi chú

uninstall sẽ không xóa toàn bộ thư mục ProgramData/sslTrusKSP. config.dat đã lưu, tệp chứng chỉ và nhật ký cần được dọn dẹp thủ công.


Xem cấu hình khóa​

signtool ksp list

Mô tả các trường đầu ra:

TrườngÝ nghĩa
NoSố thứ tự
CertCodeSố chứng chỉ
ServerUrlHiển thị là nicsrs hoặc default
AccessKeyAccess Key
AccessSecretAccess Secret đã được che khuất
Ghi chú
  • Nếu không có tệp cấu hình, trả về no ksp configuration.
  • Nếu cấu hình tồn tại nhưng danh sách khóa trống, ghi lại no ksp key.
  • AccessSecret hiển thị dưới dạng ẩn danh, nhưng bản thân tệp cấu hình vẫn phải được quản lý như tệp nhạy cảm.

Thêm cấu hình khóa​

signtool ksp add

Chỉ định địa chỉ NICSRS:

signtool ksp add --address nicsrs

Lệnh ở chế độ tương tác, nhập lần lượt:

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

Sau khi thực thi:

  1. Gọi /v1/codesign/cert từ xa để lấy PEM chứng chỉ.
  2. Lưu chứng chỉ dưới dạng ProgramData/sslTrusKSP/CERT_CODE.crt.
  3. Ghi cấu hình khóa vào ProgramData/sslTrusKSP/config.dat (mã hóa DPAPI).

Nếu số chứng chỉ đã tồn tại, sẽ có thông báo:

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

Nhập y để ghi đè, nhập giá trị khác hoặc nhấn Enter trực tiếp sẽ hủy bỏ.

Lưu ý

ksp add là lệnh tương tác, hiện không hỗ trợ các tham số không tương tác như --access-key, --cert-code. Việc thêm cấu hình sẽ truy cập API từ xa và ghi PEM chứng chỉ vào ProgramData cục bộ.


Xóa cấu hình khóa​

signtool ksp del

Nhập số chứng chỉ tương tác:

Please enter the certificate code: CERT_CODE

Sau khi thực hiện, hãy xóa cấu hình khóa khớp khỏi config.dat và lưu lại tệp cấu hình đã mã hóa.

Ghi chú

Cách triển khai hiện tại chỉ xóa mục cấu hình, không xóa tệp chứng chỉ ProgramData/sslTrusKSP/CERT_CODE.crt.


Sử dụng Microsoft signtool.exe thông qua KSP​

Sau khi cấu hình KSP hoàn tất, hãy sử dụng Microsoft signtool.exe trong Windows SDK để gọi Provider.

Lưu ý

Lệnh signtool.exe sau đây là công cụ đi kèm Microsoft Windows SDK, không phải CLI của sslTrus. Nếu cả hai cùng tồn tại trong thư mục hiện tại hoặc PATH, vui lòng sử dụng đường dẫn đầy đủ của signtool.exe trong Windows SDK để tránh nhầm lẫn.

Ví dụ chữ ký 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

Ví dụ thêm chữ ký 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

Mô tả tham số:

Tham sốÝ nghĩa
/csp "sslTrus Key Storage Provider"Chỉ định KSP Provider do sslTrus cài đặt
/kc CERT_CODEChỉ định tên khóa KSP, quy ước là số hiệu chứng chỉ
/f C:\ProgramData\sslTrusKSP\CERT_CODE.crtChỉ định tệp chứng chỉ được lưu bởi ksp add
/fd SHA256 hoặc /fd SHA1Thuật toán tóm tắt tệp
/tr <url>Dịch vụ dấu thời gian RFC3161
/td SHA256Thuật toán tóm tắt dấu thời gian
/asKý bổ sung, không ghi đè chữ ký hiện có

Tham khảo khắc phục sự cố​

Thông báo lỗiNguyên nhân có thểGợi ý xử lý
key storage provider is only supported on windowsĐã thực thi lệnh ksp trên nền tảng không phải Windows.Chỉ thực hiện thao tác KSP trên Windows.
no ksp configurationChưa tạo tệp cấu hình KSP.Trước tiên hãy thực thi signtool ksp install và signtool ksp add.
no such certificate codeSố chứng chỉ cần xóa không tồn tại.Sử dụng signtool ksp list để xác nhận số chứng chỉ.

Lưu ý bảo mật​

  • signtool ksp install và signtool ksp uninstall sẽ sửa đổi thư mục hệ thống Windows và đăng ký CNG Provider, thường yêu cầu quyền quản trị viên.
  • signtool ksp add sẽ truy cập giao diện chứng chỉ từ xa và ghi tệp chứng chỉ cùng cấu hình mã hóa vào ProgramData/sslTrusKSP.
  • Access Secret, tệp cấu hình KSP và nhật ký cục bộ đều cần được xử lý như thông tin nhạy cảm, không ghi vào nhật ký hoặc kho lưu trữ phiên bản.