Wie beantrage und verwende ich ein ServBay Code-Signier-Zertifikat?
Überblick
Im Entwicklungs- und Verteilungsprozess von Software ist die Code-Signatur ein entscheidender Schritt, um Nutzervertrauen und die Integrität der Software zu gewährleisten. Durch die digitale Signatur des Codes können Entwickler die Herkunft ihrer Software belegen und sicherstellen, dass der Code seit dem Signaturzeitpunkt nicht verändert wurde.
ServBay bietet eine komfortable Funktion, mit der Entwickler im lokalen Umfeld ein von der internen ServBay CA ausgestelltes Code-Signier-Zertifikat beantragen und verwenden können. Diese Zertifikate sind besonders geeignet für:
- Das Signieren von Software während der lokalen Entwicklungs- oder Testphase, um reale Signaturprozesse zu simulieren.
- Das Signieren von internen Skripten, Tools oder Anwendungen, um deren Ursprung und Integrität im Team oder in einer vertrauenswürdigen Umgebung zu verifizieren.
- Das Erlernen und Üben des gesamten Code-Signatur-Prozesses, ohne teure kommerzielle Code-Signier-Zertifikate erwerben zu müssen.
Wichtiger Hinweis: Die von der internen ServBay CA ausgestellten Code-Signier-Zertifikate werden nicht von öffentlich vertrauenswürdigen Zertifizierungsstellen (wie Let's Encrypt, Comodo usw.) vergeben. Sie werden von Betriebssystemen oder Browsern standardmäßig nicht als vertrauenswürdig eingestuft. Daher sind diese Zertifikate nicht geeignet für Szenarien, die öffentliches Vertrauen erfordern, etwa kommerziell veröffentlichte Software, App-Store-Einreichungen oder Anwendungen, die Betriebssystem-Sicherheitsprüfungen (wie macOS Gatekeeper-Warnungen für unbekannte Entwickler) bestehen müssen. Sie sind hauptsächlich für lokale Entwicklungs-, Test- oder kontrollierte Umgebungen gedacht.
Einführung in Code-Signier-Zertifikate
Ein Code-Signier-Zertifikat ist ein digitales Zertifikat, das dazu dient, ausführbare Dateien, Skripte, Bibliotheken u.ä. mit einer digitalen Signatur zu versehen. Es erfüllt dabei folgende zentrale Sicherheits- und Vertrauensfunktionen:
- Verifizierung des Herausgebers: Das Zertifikat enthält Angaben zum Herausgeber, wodurch die Signatur belegt, dass die Software tatsächlich vom im Zertifikat ausgewiesenen Entwickler oder Unternehmen stammt.
- Sicherstellung der Code-Integrität: Während der Signatur wird ein auf dem Codeinhalt basierender Hash generiert und mit dem privaten Schlüssel verschlüsselt. Beim Verifizieren wird der Hash erneut berechnet und mit dem im Zertifikat enthaltenen Hash verglichen, der mit dem öffentlichen Schlüssel entschlüsselt wurde. Jede Veränderung des Codes führt zu einem Hash-Mismatch und damit zu einem Signaturfehler – ein Zeichen für Manipulation.
- Mehr Vertrauen bei Nutzern: Betriebssysteme oder Sicherheitssoftware geben meist Warnungen bei nicht signierter Software oder Programmen aus unbekannten Quellen aus. Mit einem Code-Signier-Zertifikat verschwinden diese Warnungen (sofern die CA als vertrauenswürdig gilt oder manuell zur Vertrauenskette hinzugefügt wurde) – das steigert das Vertrauen in die Installation und Nutzung.
- Schutz vor Verbreitung von Schadsoftware: Mit Code-Signaturen fällt es Nutzern leichter, legitime Anwendungen von bösartiger, als legitim getarnter Software zu unterscheiden – ein wirksamer Beitrag im Kampf gegen Malware.
Beantragung eines Code-Signier-Zertifikats über ServBay
ServBay vereinfacht den Prozess zur Beschaffung von Code-Signier-Zertifikaten im lokalen Umfeld.
Öffnen Sie das SSL-Zertifikatsverwaltungs-Panel: Im ServBay-Programm in der Seitenleiste auf den Menüpunkt "SSL Certificates" klicken.
Einen neuen Zertifikatsantrag stellen: Rechts oben im SSL-Zertifikatsverwaltungsfenster auf das „+“ (Hinzufügen) klicken.
Zertifikatsinformationen ausfüllen: Im Fenster "Request Certificate" geben Sie folgende Schlüsseldaten ein:
- Common Name (Allgemeiner Name): Geben Sie Ihren Organisationsnamen oder den eigenen Namen ein. Zum Beispiel:
ServBay, LLC
oderServBay Demo Developer
. - Usage Purpose (Verwendungszweck): Wählen Sie den Verwendungszweck des Zertifikats. Hier:
Code Signing
. - Request Method (Antragsverfahren): Ausstellen-Art wählen – hier
ServBay CA
, also die eingebaute CA-Funktion von ServBay. - Issuer (Aussteller): Interne ServBay CA, die ausstellen soll (meist
ServBay User CA
). - Algorithm (Algorithmus): Verschlüsselungsalgorithmus für das Schlüsselpaar auswählen. Typisch:
ECC
(Elliptische Kurve) oderRSA
. ECC bietet mit kürzerem Schlüssel bei gleicher Sicherheit ein besseres Verhältnis. - Key Length (Schlüssellänge): Passende Länge für den gewählten Algorithmus auswählen. Für ECC z.B.
384
, für RSA z.B.2048
oder4096
. Längere Schlüssel sind sicherer, können aber Verarbeitungsgeschwindigkeit leicht senken. - Password (Passwort): Sehr wichtig! Legen Sie ein sicheres Passwort zum Schutz Ihres privaten Schlüssels fest. Sie benötigen es zum Export der Zertifikatsdatei (
.p12
) und bei der Nutzung in Signatur-Tools. Bewahren Sie das Passwort sicher auf, da ServBay es nicht wiederherstellen kann. Wählen Sie ein selbst gewähltes, starkes Passwort. (Hinweis: Das PasswortServBay.dev
im Screenshot dient als Beispiel und ist unsicher – verwenden Sie für die Praxis bitte unbedingt ein eigenes starkes Passwort!)
Screenshot-Beispiel, bitte mit Ihren tatsächlichen Daten ausfüllen
- Common Name (Allgemeiner Name): Geben Sie Ihren Organisationsnamen oder den eigenen Namen ein. Zum Beispiel:
Zertifikatsantrag einreichen: Sind alle Informationen eingegeben und stimmt alles, klicken Sie unten auf „Request“. ServBay stellt Ihnen dann über die gewählte ServBay User CA automatisch das Code-Signier-Zertifikat aus.
Export und Nutzung des Zertifikats
Nach erfolgreicher Beantragung sollten Sie das Zertifikat im Standardformat für verschiedene Signatur-Tools exportieren. ServBay exportiert das Zertifikat gewöhnlich als .p12
-Datei.
Öffnen Sie das SSL-Zertifikatsverwaltungs-Panel: In ServBay unter "SSL Certificates".
Identifizieren Sie Ihr Code-Signier-Zertifikat: Im Zertifikats-Listing das gerade beantragte Zertifikat mit Verwendungszweck "Code Signing" suchen.
Exportieren: Rechts beim Zertifikat den Export-Button anklicken (meist ein Icon mit Pfeil nach rechts).
Exportverzeichnis wählen und Passwort festlegen: Im Exportfenster das gewünschte lokale Verzeichnis auswählen. Das Dateiformat ist
.p12
(PKCS#12), das sowohl Zertifikat als auch privaten Schlüssel enthält – geschützt durch Ihr Passwort. Zum Abschluss des Exports muss das beim Antrag gesetzte Passwort eingegeben werden.In Code-Signaturtools verwenden: Die exportierte
.p12
-Datei in das gewünschte Tool importieren. Abhängig vom Betriebssystem und der Entwicklungsumgebung wird Unterschiedliches benötigt:- macOS: Das System-Tool
codesign
nutzen. Vorher die.p12
-Datei ggf. in die Schlüsselbundverwaltung (Keychain Access) importieren. - Windows: Nutzen Sie das mit dem Windows SDK mitgelieferte Tool
signtool.exe
. Die.p12
-Datei kann ggf. zuvor in den Windows-Zertifikatsspeicher importiert werden. - Andere Plattformen/Toolchains: Je nach Technologie (z.B. Java
jarsigner
, .NETSignTool
, Go Third-Party-Tools etc.) konsultieren Sie bitte die jeweilige Dokumentation. Meist werden der Pfad zur.p12
-Datei und das Passwort benötigt.
- macOS: Das System-Tool
Nach Zertifikatsimport können Sie Ihr Programm, Skript, Treiber usw. mit diesem Zertifikat digital signieren.
Beispiel: Code-Signatur mit ServBay-Zertifikat auf macOS
Hier ein Beispiel für das Signieren und Überprüfen einer Binärdatei unter macOS mit codesign
und einem über ServBay exportierten .p12
-Zertifikat.
Angenommen, die exportierte .p12
-Datei wurde in die Schlüsselbundverwaltung von macOS importiert und Sie haben das korrekte Passwort eingegeben.
bash
# 1. Ein einfaches C-Programm zum Signaturtest erzeugen
# Folgenden Inhalt als test.c speichern
cat <<EOF > test.c
#include <stdio.h>
int main() {
printf("Hello, ServBay Code Signing!\n");
return 0;
}
EOF
# 2. Mit gcc die C-Datei kompilieren, ein Binärfile erzeugen
# -o /tmp/test legt die Zieldatei nach /tmp/test
gcc test.c -o /tmp/test
echo "Kompilieren erfolgreich, /tmp/test wurde erzeugt"
# 3. Zertifikat-Identitäten für Codesignatur suchen
# -v zeigt Details
# -p codesigning filtert nach Signierzertifikaten
# Die Common Name- oder Hash-ID (z.B. 99C183BC3796067FAFBA6F232D1C3C3425DAABDA) Ihres Zertifikats finden
security find-identity -v -p codesigning
# Beispielformatausgabe:
# 1) ABCDEF1234567890ABCDEF1234567890ABCDEF12 "Apple Development: Your Name (XYZ123)"
# 2) 99C183BC3796067FAFBA6F232D1C3C3425DAABDA "ServBay Demo Developer"
# 2 valid identities found
# Den Hash oder Common Name ("ServBay Demo Developer") merken
# 4. Binärdatei mit Zertifikat signieren
# -f zwingt neue Signatur (evtl. vorhandene wird überschrieben)
# -s gibt die Identität an, entweder Hash oder Common Name (sofern eindeutig)
# --timestamp fügt einen Zeitstempel hinzu (empfohlen)
# /tmp/test ist die zu signierende Datei
codesign -f -s "ServBay Demo Developer" --timestamp /tmp/test
# Oder mit Hash:
# codesign -f -s "99C183BC3796067FAFBA6F232D1C3C3425DAABDA" --timestamp /tmp/test
echo "/tmp/test wurde mit Code-Signier-Zertifikat signiert"
# 5. Signatur überprüfen
# -dvvv zeigt sehr ausführliche Infos
codesign -dvvv /tmp/test
# Im Output nach dem "Authority"-Feld suchen – dort stehen Ihre Zertifikatsdaten und die ServBay-CA-Kette
# Hinweis auf "Signature size", "CDHash" usw. zeigt erfolgreiche Signierung
# Auf "Timestamp" achten
# Beispiel-Outputauszug:
# Authority=ServBay Demo Developer
# Authority=ServBay User CA - ECC Code Signing
# Authority=ServBay Public CA - ECC Root
# Timestamp=Nov 7, 2024 at 18:26:48 (Beispieldatum)
# 6. Datei modifizieren, Signatur zerstören
# Zufallsdaten hinzufügen – ändert den Hash
echo "abcde" >> /tmp/test
echo "Inhalt von /tmp/test wurde verändert"
# 7. Signatur erneut prüfen
# Nun sollte die Prüfung fehlschlagen
codesign -dvvv /tmp/test
# Beispielausgabe:
# /tmp/test: code object is not signed at all
# Oder ähnliche Fehlermeldung, Signatur ist ungültig, da Inhalt nicht mehr zum signierten Stand passt.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Anmerkungen:
security find-identity
listet alle Zertifikate im Schlüsselbund auf, die etwa fürcodesigning
verwendbar sind. So finden Sie die Identität (meist Common Name oder Hash) Ihres importierten ServBay-Zertifikats.codesign -f -s "Ihre Identität"
führt die Signatur durch. Die Option--timestamp
kontaktiert einen Zeitstempelserver, um die Signatur auch bei abgelaufenem Zertifikat (solange sie zum Signaturzeitpunkt gültig war) weiterhin als gültig zu markieren.- Über
codesign -dvvv
wird die Signatur in allen Details geprüft: Zertifikatsgültigkeit, Vertrauenskette und Inhaltsintegrität. - Durch die am Ende vorgenommene Dateiveränderung und Neuprüfung erkennen Sie die Hauptfunktion der Code-Signierung: Integritätsprüfung. Bei jeder Änderung wird die Signatur ungültig.
Zertifikat verlängern
Von ServBay ausgestellte Code-Signier-Zertifikate sind befristet gültig (meist 800 Tage). Vor Ablaufdatum können Sie das Zertifikat im ServBay-SSL-Zertifikatsverwaltungs-Panel verlängern.
- SSL-Zertifikatsverwaltung öffnen.
- Zu verlängerndes Code-Signier-Zertifikat auswählen.
- Auf Verlängerungsaktion klicken: Das Icon (meist ein Pfeil im Kreis) rechts benutzen.
- Verlängerung bestätigen: Nach Klick stellt ServBay Ihnen automatisch ein neues Zertifikat mit 800 Tagen Laufzeit ab dem aktuellen Datum aus.
Zertifikat löschen
Wenn Sie ein Code-Signier-Zertifikat nicht mehr benötigen, können Sie es in ServBay löschen.
- SSL-Zertifikatsverwaltung öffnen.
- Zu löschendes Zertifikat finden.
- Löschaktion wählen: Rechts beim Zertifikat das Mülleimer-Symbol anklicken.
- Löschvorgang bestätigen: Im Bestätigungsfenster "Delete" wählen und nochmals bestätigen. Achtung: Nach dem Löschen kann das Zertifikat nicht wiederhergestellt werden.
Häufig gestellte Fragen (FAQ)
F: Sind die von ServBay ausgestellten Code-Signier-Zertifikate kostenlos?
A: Ja, alle von der internen ServBay CA ausgestellten Zertifikate sind ein integriertes ServBay-Feature und verursachen keine Zusatzkosten.
F: Kann ich mein mit ServBay ausgestelltes Zertifikat für meine kommerziell verteilte Software verwenden?
A: Nein. Die von ServBay ausgestellten Zertifikate stammen von einer internen CA, der weder Betriebssysteme noch Appstores standardmäßig vertrauen. Sie sind ausschließlich für lokale Entwicklung, Test oder kontrollierte Umgebungen geeignet. Für öffentlich verbreitete kommerzielle Software benötigen Sie ein bei einer öffentlich vertrauenswürdigen CA erworbenes Code-Signier-Zertifikat.
F: Was tun, wenn ich das beim Export der .p12
-Datei gesetzte Passwort vergessen habe?
A: ServBay speichert Ihr privates Passwort nicht. Wenn das Passwort verloren ist, können Sie den privaten Schlüssel nicht mehr exportieren oder nutzen. Sie müssen das jeweilige Zertifikat löschen und ein neues Code-Signier-Zertifikat beantragen.
F: Kann ich die ServBay User CA zu meinen vertrauenswürdigen Stammzertifikaten im Betriebssystem hinzufügen?
A: Ja, Sie können das ServBay User CA Zertifikat exportieren und manuell dem Vertrauensspeicher Ihres Betriebssystems oder Browsers hinzufügen.
Zusammenfassung
Mit der von ServBay bereitgestellten Code-Signier-Zertifikat-Funktion können Entwickler bequem in ihrer lokalen Umgebung Software-Signaturtests durchführen und interne Tools signieren. Mit dieser Anleitung sollten Sie den gesamten Ablauf vom Beantragen, Exportieren bis hin zur Nutzung des Zertifikats in ServBay verstanden haben. Denken Sie daran: Diese Zertifikate dienen primär Entwicklungs- und Testzwecken und sind nicht für Anwendungen vorgesehen, die öffentliches Vertrauen erfordern.
Sollten bei der Beantragung oder im praktischen Gebrauch Probleme auftreten, empfiehlt sich die Konsultation der offiziellen ServBay-Dokumentation oder der Austausch mit der Community.