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

Công cụ máy khách

sslTrus cung cấp ứng dụng khách dòng lệnh và ứng dụng khách máy tính để kết nối dịch vụ ký mã từ xa và hoàn tất việc ký tệp tin.

Trong đó, SignTool CLI phù hợp cho các tình huống dòng lệnh, script và tự động hóa; người dùng macOS cũng có thể cài đặt và cập nhật SignTool CLI hoặc ứng dụng desktop qua Homebrew.

SignTool CLI​

SignTool CLI là ứng dụng khách dòng lệnh ký mã từ xa do sslTrus cung cấp, tên tệp thực thi sau khi cài đặt là signtool.

Nó chủ yếu cung cấp các khả năng sau:

Chức năngLệnhMô tả
Ký tệpsigntool signThực hiện ký mã từ xa cho tệp cục bộ
Hạn mức chữ kýsigntool quotaTra cứu số lượt ký còn lại và tổng hạn mức của chứng chỉ
Cập nhật máy kháchsigntool updateKiểm tra và cài đặt phiên bản máy khách mới nhất cho nền tảng hiện tại
Windows KSPsigntool kspCài đặt và quản lý Windows Key Storage Provider
Windows CSPsigntool cspCài đặt và quản lý Windows Cryptographic Service Provider

KSP và CSP thuộc phương thức tích hợp Windows Provider, cách sử dụng cụ thể vui lòng tham khảo Windows Provider.

Tải xuống ứng dụng khách​

SignTool CLI có thể được tải xuống từ trang phát hành của sslTrus client:

sslTrus trình khách hàng

Trang phát hành cung cấp các gói cài đặt ứng dụng khách mới nhất cho từng nền tảng.Kịch bản tự động hóa cũng có thể truy vấn thông tin phiên bản mới nhất hiện tại thông qua chỉ mục phiên bản latest.json.

Người dùng macOS cũng có thể cài đặt trực tiếp qua Homebrew, xem thêm phần macOS Homebrew bên dưới.

Xem thông tin máy khách​

Sau khi cài đặt hoàn tất, bạn có thể thực hiện:

signtool --help

Xem trợ giúp về lệnh.

Xem phiên bản client hiện tại:

signtool --version

Thông tin phiên bản bao gồm phiên bản client, bản revision build, nền tảng chạy và thời gian build, v.v.

Thông tin truy cập​

Trước khi sử dụng dịch vụ ký mã từ xa, cần chuẩn bị:

  • Access Key
  • Access Secret
  • Mã chứng chỉ (Cert Code)

Trong đó Access Key và Access Secret được sử dụng để truy cập dịch vụ ký mã từ xa, số chứng chỉ dùng để chỉ định chứng chỉ ký mã thực hiện ký trên thực tế.

SignTool CLI có thể cung cấp thông tin xác thực thông qua tham số lệnh, hoặc cũng có thể đọc từ biến môi trường:

export ACCESS_KEY="your-access-key"
export ACCESS_SECRET="your-access-secret"

Nên ưu tiên cung cấp Access Secret thông qua biến môi trường, CI/CD Secret hoặc các phương thức quản lý thông tin xác thực an toàn khác.

Không tiết lộ Access Secret:

  • Đẩy lên kho Git.
  • Ghi vào tập lệnh công khai.
  • Xuất ra nhật ký build.
  • Gửi đến hệ thống bên thứ ba không đáng tin cậy.

Địa chỉ dịch vụ từ xa​

Mặc định, SignTool CLI sử dụng địa chỉ dịch vụ sản xuất sslTrus, không cần cấu hình thêm.

Nếu sử dụng môi trường NICSRS (www.nicsrs.com), cần thêm --address nicsrs vào lệnh:

signtool sign \
--address nicsrs \
--cert-code CERT_CODE \
--file app.exe

signtool quota và signtool update cũng hỗ trợ --address nicsrs.

Ký tên tệp​

Sử dụng signtool sign có thể trực tiếp thực hiện ký mã từ xa cho các tệp cục bộ.

Lệnh ký cơ bản nhất:

signtool sign \
--cert-code CERT_CODE \
--file app.exe

Nếu đã thiết lập:

ACCESS_KEY
ACCESS_SECRET

SignTool CLI sẽ tự động đọc thông tin truy cập tương ứng.

Mặc định sử dụng SHA-2 để thực hiện chữ ký.

Chỉ định tệp đầu ra​

Theo mặc định, máy khách sẽ không trực tiếp ghi đè lên tệp gốc.

Bạn có thể chỉ định tệp đầu ra sau khi ký bằng --out:

signtool sign \
--cert-code CERT_CODE \
--file app-unsigned.exe \
--out app-signed.exe

Ghi đè tệp gốc​

Nếu cần trực tiếp chỉnh sửa tệp gốc, bạn có thể sử dụng:

signtool sign \
--cert-code CERT_CODE \
--file app.exe \
--override=true

Sau khi kích hoạt --override, kết quả ký sẽ được ghi trực tiếp trở lại tệp đầu vào.

Trong môi trường tự động hóa xây dựng, cần xác nhận rằng bước tiếp theo yêu cầu tệp gốc hay tệp đã ký.

Chỉ định mô tả chương trình​

Có thể ghi mô tả chương trình và URL vào chữ ký Authenticode:

signtool sign \
--cert-code CERT_CODE \
--file app.exe \
--desc "Example Application" \
--url "https://example.com"

SHA-1 và SHA-2​

Mặc định bật SHA-2:

signtool sign \
--cert-code CERT_CODE \
--file app.exe

Chỉ sử dụng SHA-1:

signtool sign \
--cert-code CERT_CODE \
--file app.exe \
--sha1=true \
--sha2=false

Đồng thời kích hoạt SHA-1 và SHA-2:

signtool sign \
--cert-code CERT_CODE \
--file app.exe \
--sha1=true \
--sha2=true

SHA-1 chủ yếu được sử dụng để tương thích với các hệ thống cũ, các dự án mới thường nên ưu tiên sử dụng SHA-2.

Dấu thời gian​

Mã ký mã thường được khuyến nghị thêm đồng thời dấu thời gian đáng tin cậy.

SignTool CLI mặc định sẽ tự động cấu hình dịch vụ timestamp cho chữ ký, cũng có thể chỉ định máy chủ timestamp qua tham số:

  • --timestamp-rfc3161:Máy chủ dấu thời gian RFC 3161 dùng cho chữ ký SHA-2.
  • --timestamp:Máy chủ dấu thời gian Authenticode dùng cho chữ ký SHA-1.

Chỉ định máy chủ timestamp RFC 3161:

signtool sign \
--cert-code CERT_CODE \
--file app.exe \
--timestamp-rfc3161=http://timestamp.acs.microsoft.com

Chỉ định máy chủ dấu thời gian Authenticode:

signtool sign \
--cert-code CERT_CODE \
--file app.exe \
--timestamp=http://timestamp.sectigo.com

Nếu cần tắt dấu thời gian tương ứng, có thể đặt giá trị tham số thành rỗng:

signtool sign \
--cert-code CERT_CODE \
--file app.exe \
--timestamp-rfc3161= \
--timestamp=

Để biết thêm về giao thức dấu thời gian, địa chỉ máy chủ và gợi ý lựa chọn, vui lòng tham khảo tài liệu tham khảo.

Truy vấn hạn mức chữ ký​

Sử dụng:

signtool quota

Có thể truy vấn hạn mức chứng chỉ ký mã hiện có của thông tin xác thực truy cập.

Thông tin đầu ra bao gồm:

  • Mã số chứng thư.
  • Thông tin chứng thư.
  • Số lần ký còn lại.
  • Tổng số lần ký.

Nếu cần đầu ra ở định dạng JSON:

signtool quota --json

Cũng có thể sử dụng cách viết tắt:

signtool quota -j

Cách tính số lần ký cụ thể có thể khác nhau tùy thuộc vào cách gọi CLI, KSP, Jarsigner hoặc công cụ xây dựng, vui lòng tham khảo Hướng dẫn tính số lần ký để biết chi tiết.

Cập nhật máy khách​

SignTool CLI hỗ trợ truy vấn và cài đặt phiên bản mới nhất của nền tảng hiện tại:

signtool update

Trong quá trình cập nhật, kích thước tệp tải xuống và SHA-256 sẽ được xác minh để đảm bảo tính toàn vẹn của tệp máy khách.

Nếu SignTool CLI được cài đặt qua Homebrew, bạn nên tiếp tục quản lý phiên bản qua Homebrew thay vì trộn lẫn cả hai cách cập nhật cùng lúc.

macOS Homebrew​

Người dùng macOS có thể cài đặt SignTool CLI hoặc ứng dụng khách máy tính để bàn qua Homebrew Tap chính thức của sslTrus.

Kho lưu trữ công khai: ssltrus-official/homebrew-tap

Cài đặt Homebrew Tap​

Thực hiện:

brew tap ssltrus-official/tap
brew trust ssltrus-official/tap

Sau khi hoàn tất, bạn có thể cài đặt ứng dụng khách tương ứng.

Cài đặt SignTool CLI​

Thực hiện:

brew install ssltrus-official/tap/code-sign-cli

Sau khi cài đặt hoàn tất, bạn có thể thực hiện:

signtool --version

Xác nhận rằng ứng dụng khách đã được cài đặt đúng cách.

Tên gói phần mềm trong Homebrew là:

code-sign-cli

Tên chương trình dòng lệnh thực tế được cài đặt là:

signtool

Cài đặt ứng dụng khách trên máy tính để bàn​

Cài đặt ứng dụng desktop ký mã sslTrus:

brew install --cask ssltrus-official/tap/code-sign-gui

Tên Homebrew Cask tương ứng là:

code-sign-gui

Cập nhật máy khách​

Nếu khách hàng cài đặt qua Homebrew, nên sử dụng Homebrew để nâng cấp.

Trước tiên, cập nhật thông tin gói phần mềm Homebrew:

brew update

Nâng cấp SignTool CLI:

brew upgrade ssltrus-official/tap/code-sign-cli

Nâng cấp ứng dụng desktop:

brew upgrade --cask ssltrus-official/tap/code-sign-gui

Điều này giúp phiên bản cài đặt cục bộ khớp với siêu dữ liệu gói Homebrew.

Windows Provider​

Nếu tình huống của bạn không phải gọi trực tiếp SignTool CLI, mà muốn Microsoft SignTool, Visual Studio, MSBuild, Advanced Installer hoặc phần mềm Windows khác trực tiếp sử dụng khóa riêng ký mã từ xa, bạn nên sử dụng Windows Provider.

sslTrus cung cấp:

  • KSP (Key Storage Provider): dành cho Windows CNG.
  • CSP (Cryptographic Service Provider): dành cho Windows CryptoAPI truyền thống.

Vui lòng tham khảo Windows Provider.

CI/CD tự động ký số​

Nếu cần thực hiện ký số trong quá trình tích hợp liên tục hoặc tự động xây dựng, không nhất thiết phải cài đặt và gọi SignTool CLI một cách thủ công.

Ví dụ: GitHub Actions có thể trực tiếp sử dụng sslTrus Code Sign Action:

- name: Sign files
uses: ssltrus-official/code-sign-action@v1
with:
access-key: ${{ secrets.SSLTRUS_ACCESS_KEY }}
access-secret: ${{ secrets.SSLTRUS_ACCESS_SECRET }}
cert-code: ${{ secrets.SSLTRUS_CERT_CODE }}
files: build/app.exe

GitHub Action hỗ trợ Linux, macOS và Windows Runner, đồng thời có thể thực hiện ký mã từ xa trực tiếp trên các tệp tin cụ thể trong quy trình xây dựng.

Kho lưu trữ công khai: ssltrus-official/code-sign-action

Để biết cấu hình đầy đủ, vui lòng tham khảo CI/CD và công cụ xây dựng.

Cách lựa chọn​

Bạn có thể lựa chọn ứng dụng khách hoặc phương thức tích hợp phù hợp dựa trên cách sử dụng thực tế:

Tình huốngCách đề xuất
Ký tệp thủ công trong terminalSignTool CLI
Sử dụng tập lệnh để gọi ký hàng loạtSignTool CLI
Truy vấn hạn mức ký mãSignTool CLI
Cài đặt và cập nhật CLI trên macOSHomebrew
Sử dụng ứng dụng khách trên máy tính để bàn macOSHomebrew
Phần mềm Windows như Microsoft SignTool gọi trực tiếp khóa riêng từ xaKSP
Phần mềm CryptoAPI truyền thốngCSP
Ký tự động trong GitHub ActionsGitHub Actions
Tự phát triển ứng dụng khách kýAPI ký mã từ xa

Nếu ứng dụng của bạn đã hỗ trợ Windows KSP, CSP hoặc các Provider tiêu chuẩn khác, thông thường bạn nên ưu tiên sử dụng phương thức tích hợp tiêu chuẩn tương ứng; nếu cần kiểm soát trực tiếp quy trình ký, bạn có thể sử dụng SignTool CLI hoặc API ký mã từ xa.