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

signtool ksp và tích hợp Windows KSP

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

Lưu ý

Tất cả các lệnh con của signtool ksp chỉ hỗ trợ nền tảng Windows. Khi 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 lệnh con

signtool ksp [command]
Lệnh phụMục đích
installCài đặt và đăng ký KSP DLL
uninstallHủy đăng ký KSP và xóa DLL
listLiệt kê các 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 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 sang 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, nên 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 hiện:

  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. Các tệp config.dat, tệp chứng chỉ và nhật ký đã lưu cần được dọn dẹp thủ công.


Xem cấu hình khóa

signtool ksp list

Giải thích 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 thông tin nhạy cảm
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 che khuất, 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 có tính 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 mã 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 để 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ố hiệu 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 qua KSP

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

Lưu ý

signtool.exe trong các lệnh dưới đây là công cụ đi kèm Windows SDK của Microsoft, không phải sslTrus CLI. 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ụ 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

Giải thích 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ố 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ụ tem thời gian RFC3161
/td SHA256Thuật toán tóm tắt tem thời gian
/asThêm chữ ký, 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ểĐề xuất 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 installsigntool ksp add.
no such certificate codeSố chứng chỉ cần xóa không tồn tại.Dùng signtool ksp list để xác nhận số chứng chỉ.

Lưu ý an toàn

  • signtool ksp installsigntool 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 phải đượ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.