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ộ.
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 |
|---|---|
install | Cài đặt và đăng ký KSP DLL |
uninstall | Hủy đăng ký KSP và xóa DLL |
list | Liệt kê các 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.dllnhú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 sang 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, 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:
- 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. 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 |
|---|---|
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 thông tin nhạy cảm |
- 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 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:
- 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 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ỏ.
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.
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.
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_CODE | Chỉ định tên khóa KSP, quy ước là số 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ụ tem thời gian RFC3161 |
/td SHA256 | Thuật toán tóm tắt tem thời gian |
/as | Thê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ỗi | Nguyê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 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. | Dùng signtool ksp list để xác nhận số chứng chỉ. |
Lưu ý an toàn
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 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.