Zum Hauptinhalt springen

Leitfaden zur Verwendung des SignTool-Befehlszeilentools

SignTool ist der Befehlszeilen-Client des sslTrus-Remote-Codesignierungsdienstes, der zur Ausführung von Codesignierungsvorgängen im Terminal oder in Automatisierungsskripten verwendet wird.

Schnellstart​

Das Folgende ist ein grundlegendes Beispiel für einen Signaturbefehl, den Sie kopieren, entsprechend den Kommentaren ändern und dann verwenden können:

# 视情况而定,是否需要开启调试模式
#export DEBUG=1

# 使用环境变量配置 AK、SK 以及证书订阅号
export SIGNTOOL_ACCESS_KEY='' SIGNTOOL_ACCESS_SECRET='' SIGNTOOL_CERT_CODE=''

# 签名
./signtool sign \
--dry-run \
--access-key=$SIGNTOOL_ACCESS_KEY \
--access-secret=$SIGNTOOL_ACCESS_SECRET \
--cert-code=$SIGNTOOL_CERT_CODE \
--file=app-unsigned.exe \
--out=app.exe \
--sha1=false \
--sha2=true \
--timestamp-rfc3161 http://timestamp.acs.microsoft.com

Befehlsdetails​

Vor dem Start müssen Sie die folgenden drei Informationen vorbereiten:

Hilfe anzeigen​

Mit dem Parameter -h oder --help können Sie die vollständige Befehls-Hilfe anzeigen.

./signtool sign -h

Kernparameter-Erklärung​

ParameterAbkürzungErforderlichBeschreibung und Beispiel
--access-key-kJaAPI-Zugriffsschlüssel. Kann auch über die Umgebungsvariable SIGNTOOL_ACCESS_KEY festgelegt werden.
--access-secret-sJaAPI-Zugriffsschlüssel. Kann auch über die Umgebungsvariable SIGNTOOL_ACCESS_SECRET festgelegt werden.
--cert-code-cJaAbonnementnummer des Remote-Codesignierungsdienstes, zur Angabe des Signaturzertifikats und der Abrechnung.
--file-fJaPfad der zu signierenden Datei. Beispiel: -f „app.dll“.
--out-oNeinPfad der Ausgabedatei. Standard: Hinzufügen von .signed nach dem ursprünglichen Dateinamen. Wichtig: Falls die Datei bereits existiert, schlägt der Vorgang fehl.
--overrideNeinGibt an, ob der Pfad der zu signierenden Datei überschrieben werden soll. Standard: false.
--sha1-1NeinAktiviert die SHA1-Algorithmus-Signierung (für Kompatibilität mit älteren Systemen).
--sha2-2NeinAktiviert die SHA256-Algorithmus-Signierung (moderner Standard, empfohlen).
--nestNeinGibt an, ob eine verschachtelte Signatur erfolgt. Wenn die Datei bereits eine Signatur hat, behält --nest=true (Standard) die ursprüngliche Signatur bei und fügt eine neue hinzu; false löscht die alte Signatur. Effektvergleich: nest
--timestampNeinURL des Zeitstempelservers für SHA1-Signaturen. Setzen Sie einen leeren String „"“, um zu deaktivieren.
--timestamp-rfc3161NeinURL des RFC-3161-Zeitstempelservers für SHA256-Signaturen. Setzen Sie einen leeren String „"“, um zu deaktivieren.
--desc-nNeinBeschreibung des Programms. Diese Information wird in die Signatur eingebettet und kann in einer System-Sicherheitswarnung wie folgt angezeigt werden: desc
--url-uNeinOffizieller Link mit Informationen zum Programm.
--verifyNeinVerifiziert unmittelbar nach der Signierung, ob die Dateisignatur gültig ist.
--dry-runNeinTestmodus. In diesem Modus wird der Signaturvorgang mit einem selbstsignierten Zertifikat verifiziert. Die zugehörigen Zugriffsschlüssel und Abonnementnummern können beliebig angegeben werden.

Über boolesche Parameter​

Für Parameter, die true/false akzeptieren (z. B. --sha1, --nest), muss das Format Parameter=Wert verwendet werden; eine Trennung durch Leerzeichen wird nicht unterstützt.

  • Richtig: --sha1=true --sha2=false
  • Falsch: --sha1 true --sha2 false