Signierung einer App für die Veröffentlichung im Internet

Wir möchten gerne eine signierte App im Internet veröffentlichen.
Um das zu realisieren brauchen wir

  • die App selbst. Wir gehen davon aus, dass wir selbst die App programmiert haben
  • ein bestätigtes Zertifikat von einer Zertifizierungsstelle
  • openssl um eine pfx Zertifikatsdatei zu erstellen
  • ein Signierung-Programm, z.B. signtool, mit dem wir unsere App signieren können
Punkt
Wir arbeiten in einem Projekt und zu diesem Projekt gehört eine Entwicklung einer App. Die App wird für unsere Kunden im Internet zur Verfügung gestellt. Die App besteht aus einer ausführbaren Datei Schalies.exe und ein paar Bibliothek-Dateien.  Die App haben wir mit einer objektorientierten Programmiersprache entwickelt. Unsere App möchten wir gerne mit einem Code Signing Zertifikat signieren. Viele Zertifizierungsstelle bitte auch so ein Zertifikat, z.B. https://signmycode.com
Punkt
Um ein Zertifikat bei einer Zertifizierungsstelle zu beantragen, brauchen wir ein Schlüsselpaar, einen Public Key und einen Private Key. Die Keys können wir auf verschieden Weise mit verschiedenen Tool erstellen. Eine von Möglichkeiten ist es so ein Schlüsselpaar direkt auf der Homepage https://ssltoolsonline.com/csr-generator zu generieren.
In dem Formular können wir benötigte Angaben eintragen, danach klickt man einfach auf "GENERATE NOW" und schon haben wir die Schlüssel generiert.
WICHTIG: Der Inhalt des im CSR Fensters in einer Datei speichern und unbedingt den "PRIVATE KEY" downloaden. Beider Schlüsseln gut aufbewahren. Den Public Key schicken Sie der Zertifizierungsstelle zusammen mit den benötigten Informationen. Den Private Key wird benötigt um eine pfx Zertifizierungdatei zu erstellen, aber zuerst brauchen wir unseres bestätigtes crt Zertifikat von der Zertifizierungsstelle.
Punkt
Nach Erhalt des Zertifikat von der Zertifizierungsstelle können wir ein pfx Zertifikatsdatei mit openssl erstellen.
Hier haben wir zwei Möglichkeiten.
  • die benötigte Dateien auf Linux-System zu übertragen und dort die pfx Datei erstellen,
    openssl ist normalerweise schon installiert
  • openssl für Windows aus dem Internet herunterzuladen (am besten die Version OpenSSL-1.1.1h)
    und hier die pfx Datei zu erstellen
In beiden Fällen brauchen wir den Private Key und das bestätigte crt Zertifikat von der Zertifizierungsstelle.

# openssl pkcs12 -export -out myCodeZertifikat.pfx -inkey myPrivateKey.key -in myBestaetigtesZertifikat.crt

Wir können ein Passwort vergeben oder auch nicht. Ich vergebe normalerweise kein Passwort, aber bewahre die Datei an einem sicheren Ort.
Punkt
Auf den Microsoft-Web-Seite können wir Windows SDK als iso Datei herunterladen. Mit 7-Zip können wir die Datei entpacken. Selbstverständlich müssen wir nicht alles installieren.
Wir benötigen folgende Dateien
  • Windows SDK Signing Tools-x86_en-us.msi
  • 4c3ef4b2b1dc72149f979f4243d2accf.cab
  • 685f3d4691f444bc382762d603a99afc.cab
  • e5c4b31ff9997ac5603f4f28cd7df602.cab
  • e98fa5eb5fee6ce17a7a69d585870b7c.cab
oder einfach die Windows SDK Signing Tools-x86_en-us.msi ausführen.
Nach der Installation in meinem Fall befindet sich die Datei im Ordner
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x86".

Den Pfad können wir in den Umgebungsvariablen in Systemvariablen unter Path eintragen, danach haben wir von jeder Stelle in System zugriff auf diese Datei signtool.exe.

Punkt
Jetzt haben wir alles was benötigt wird um unsere programmierte App zu signieren. Die Pfade zu den Dateien, wenn nötig, müssen wir noch berücksichtigen.

 

C:\> signtool sign /v /f myCodeZertifikat.pfx /t http://timestamp.sectigo.com /fd SHA256 C:><path>\myApp.exe

Nach der Signierung unsere App mit den Namen myApp können wir noch, wenn benötigt wird, mit
z.B. "Inno Setup" ein Installationsprogramm erstellen. Auch das Installationsprogramm können wir signieren und dann im Internet veröffentlichen.