Hallo zusammen,
ich programmiere teilweise unter Linux und Windows abwechselnt. Die Windowsanwendungen signiere ich mit einem CodeSigning-Zertifikat (Authenticode), was grundsätzlich kein Problem ist.
Das bisher immer händisch vorgenommene Signieren möchte ich jetzt automatisieren. Grundsätzlich kein Problem, hierfür eine Batch- bzw. Shell-Datei zu erstellen. Diese kann ich ja als Compiler-Kommando nach dem kompilieren aufrufen.
Das Problem ist jetzt das Betriebssystem. Kann ich das irgendwie abfragen und dann entweder die Batch oder die Shell-Datei ausführen?
Schöne Grüße
[Gelöst] Authenticode unter Linux und Windows
-
- Lazarusforum e. V.
- Beiträge: 366
- Registriert: So 5. Mai 2019, 16:52
- OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 3.6, FPC 3.2.2)
- CPU-Target: x86_64, i386
- Wohnort: Bayreuth
[Gelöst] Authenticode unter Linux und Windows
Zuletzt geändert von Ich934 am Sa 29. Feb 2020, 19:27, insgesamt 1-mal geändert.
Tipp für PostgreSQL: www.pg-forum.de
-
- Lazarusforum e. V.
- Beiträge: 366
- Registriert: So 5. Mai 2019, 16:52
- OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 3.6, FPC 3.2.2)
- CPU-Target: x86_64, i386
- Wohnort: Bayreuth
Re: Authenticode unter Linux und Windows
Hm, scheinbar bin ich der einzige der dieses Problem hat... Naja ich habe eine Lösung...
1. ich installiere das Package CodeSigningHelper
2. Problem unter Windows gelöst
3. unter Linux verwende ich ein Bash Script, welches das Ganze umschreibt
Linux braucht eine Sonderbehandlung. Das Microsoft Tool codesign.exe läuft dort nicht (auch nicht mit wine). Es gibt aber mit osslsigncode eine Alternative. Problem ist jedoch, dass ich hier andere Parameter habe. Ich löse das Problem mit einem kleinen Bash-Script, welches ich einfach "codesign" nenne. Dieses übersetzt die Parameter von codesign.exe in die Parameter von ossisgncode. Das Passwort für das Zertifikat habe ich in einer Datei abgelegt und lese ich von dieser ein (wichtig: es muss der komplette Pfad angegeben werden, ~ geht nicht!). Weiterhin muss das Zertifikat vom .pfx-Format in das .p12-Format umgewandelt werden.
Unter Linux schauen meine Einstellungen dann wie folgt aus:

Der Vorteil für mich ist jetzt, dass ich auf allen Systemen den gleichen Workflow und das gleiche Verhalten habe. Problem ist für mich gelöst.
cu tb
Bearbeitet:
2020-03-02 22:22: Skript aktualisiert
1. ich installiere das Package CodeSigningHelper
2. Problem unter Windows gelöst
3. unter Linux verwende ich ein Bash Script, welches das Ganze umschreibt
Linux braucht eine Sonderbehandlung. Das Microsoft Tool codesign.exe läuft dort nicht (auch nicht mit wine). Es gibt aber mit osslsigncode eine Alternative. Problem ist jedoch, dass ich hier andere Parameter habe. Ich löse das Problem mit einem kleinen Bash-Script, welches ich einfach "codesign" nenne. Dieses übersetzt die Parameter von codesign.exe in die Parameter von ossisgncode. Das Passwort für das Zertifikat habe ich in einer Datei abgelegt und lese ich von dieser ein (wichtig: es muss der komplette Pfad angegeben werden, ~ geht nicht!). Weiterhin muss das Zertifikat vom .pfx-Format in das .p12-Format umgewandelt werden.
Code: Alles auswählen
#!/bin/bash
### Dokumentation signtool.exe
# https://docs.microsoft.com/de-de/dotnet/framework/tools/signtool-exe
para=""
password="-readpass /pfad/zur/passwort.datei"
POSITIONAL=()
while [[ $# -gt 0 ]]
do
key="$1"
case $key in
sign)
para+="sign "$password
shift
;;
/ac)
shift
shift
;;
/as)
para+=" -nest"
shift
shift
;;
/nph)
shift
;;
/ph)
### erzeugt Absturz
#para+=" -ph"
shirt
;;
/v)
para+=" -verbose"
shift
;;
/f)
para+=" -pkcs12 "$2
shift
shift
;;
sha256)
para+=" -h sha256"
shift
;;
/fd)
para+=" -h "$2
shift
shift
;;
/tr)
para+=" -ts "$2
shift
shift
;;
/d)
para+=" -n \""$2"\""
shift
shift
;;
*)
para+=" -in "$1" -out "$1".signed.exe"
prog=$1
shift
;;
esac
done
#echo $para
/usr/bin/osslsigncode $para
if [ $? -eq 0 ];
then
mv $prog".signed.exe" $prog
else
exit 1
fi
exit 0

Der Vorteil für mich ist jetzt, dass ich auf allen Systemen den gleichen Workflow und das gleiche Verhalten habe. Problem ist für mich gelöst.
cu tb
Bearbeitet:
2020-03-02 22:22: Skript aktualisiert
Tipp für PostgreSQL: www.pg-forum.de