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ộ.
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 con | Mục đích |
|---|---|
install | Cài đặt và đăng ký KSP DLL |
uninstall | Hủy đăng ký KSP và xóa DLL |
list | Liệt kê cấu hình khóa KSP đã lưu |
add | Thêm cấu hình khóa KSP mới (tương tác) |
del | Xóa cấu hình khóa KSP được chỉ định (tương tác) |
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:
- Ghi
sslTrusKSP.dllđược nhúng vàoProgramData/sslTrusKSP/sslTrusKSP.dll. - Nếu phiên bản DLL trong ProgramData khác với trong System32, hãy sao chép DLL vào System32.
- Đăng ký CNG Provider:
sslTrus Key Storage Provider. - Lưu tệp cấu hình KSP
ProgramData/sslTrusKSP/config.dat(mã hóa DPAPI).
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:
- Hủy đăng ký CNG Provider:
sslTrus Key Storage Provider. - Xóa
ProgramData/sslTrusKSP/sslTrusKSP.dll. - Xóa
sslTrusKSP.dlltrong System32.
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 |
|---|---|
No | Số thứ tự |
CertCode | Số chứng chỉ |
ServerUrl | Hiển thị là nicsrs hoặc default |
AccessKey | Access Key |
AccessSecret | Access Secret đã được che khuất |
- 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. AccessSecrethiể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:
- Gọi
/v1/codesign/certtừ xa để lấy PEM chứng chỉ. - Lưu chứng chỉ dưới dạng
ProgramData/sslTrusKSP/CERT_CODE.crt. - 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ỏ.
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.
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ệ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_CODE | Chỉ định tên khóa KSP, quy ước là số hiệu chứng chỉ |
/f C:\ProgramData\sslTrusKSP\CERT_CODE.crt | Chỉ định tệp chứng chỉ được lưu bởi ksp add |
/fd SHA256 hoặc /fd SHA1 | Thuật toán tóm tắt tệp |
/tr <url> | Dịch vụ dấu thời gian RFC3161 |
/td SHA256 | Thuật toán tóm tắt dấu thời gian |
/as | Ký bổ sung, không ghi đè chữ ký hiện có |
Tham khảo khắc phục sự cố
| Thông báo lỗi | Nguyê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 configuration | Chư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 code | Số 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 installvàsigntool ksp uninstallsẽ 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 addsẽ 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àoProgramData/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.