Inhaltsverzeichnis

Szenario 3.3: Code-Signing-Zertifikat ausstellen

Kategorie: Zertifikate ausstellen
Komplexität: ⭐⭐⭐ (Mittel-Hoch)
Voraussetzungen: CSR vorhanden, Code-Signing-CA
Geschätzte Zeit: 10-15 Minuten


Beschreibung

Dieses Szenario beschreibt die Ausstellung eines Code-Signing-Zertifikats für die Signierung von Software. Code-Signing ermöglicht die Verifikation der Herkunft und Integrität von Executables, DLLs, Skripten und Packages.

Anwendungsfälle:


Code-Beispiel (C#)

using WvdS.Security.Cryptography.X509Certificates.Extensions.PQ;
 
using var ctx = PqCryptoContext.Initialize();
 
var caCert = ctx.LoadCertificate("codesign-ca.crt.pem");
var caKey = ctx.LoadPrivateKey("codesign-ca.key.pem", "CaPassword!");
 
var csr = ctx.LoadCertificateRequest(File.ReadAllText("codesign.csr.pem"));
csr.VerifySignature();
 
// Code-Signing-Zertifikat ausstellen
var codesignCert = ctx.IssueCertificate(
    csr,
    issuerCert: caCert,
    issuerKey: caKey,
    serialNumber: ctx.GenerateSerialNumber(),
    validDays: 730,  // 2 Jahre
    extensions: new ExtBuilder()
        .BasicConstraints(ca: false, critical: true)
        // Key Usage: Nur digitalSignature!
        .KeyUsage(KeyUsageFlags.DigitalSignature, critical: true)
        // Extended Key Usage: Code Signing
        .ExtendedKeyUsage(ExtKeyUsage.CodeSigning)
        .SubjectKeyIdentifier(csr.PublicKey)
        .AuthorityKeyIdentifier(caCert)
        // Timestamping URL für Langzeit-Validierung
        .AuthorityInfoAccess(
            ocspUrl: "http://ocsp.example.com",
            timestampUrl: "http://timestamp.example.com"
        )
        .Build()
);
 
codesignCert.ToPemFile("codesign.crt.pem");

Extended Key Usage Varianten

OID Name Verwendung
1.3.6.1.5.5.7.3.3 codeSigning Standard Code Signing
1.3.6.1.4.1.311.10.3.13 lifetimeSigning Windows Kernel-Mode
1.2.840.113549.1.9.16.1.4 firmwareSigning Firmware (optional)

Branchenspezifische Anforderungen

Branche Anforderung Besonderheiten
Automotive UN R156 Firmware-Updates, Secure Boot
Healthcare DiGAV Medizinprodukte-Software
Industrie 4.0 IEC 62443 SPS-Firmware
Standard Microsoft Authenticode Windows SmartScreen

Windows Authenticode Signierung

# Mit SignTool und PQ-Zertifikat
signtool sign /fd SHA256 /f codesign.pfx /p "Password" /tr http://timestamp.example.com /td SHA256 myapp.exe
 
# Signatur prüfen
signtool verify /pa /v myapp.exe

Timestamp-Server

Wichtig: Code-Signing ohne Timestamp ist nach Zertifikatsablauf ungültig! Immer einen Timestamp-Server verwenden.

Server URL Protokoll
DigiCert http://timestamp.digicert.com RFC 3161
Sectigo http://timestamp.sectigo.com RFC 3161
GlobalSign http://timestamp.globalsign.com RFC 3161

Verwandte Szenarien

Beziehung Szenario Beschreibung
Nächster Schritt 8.2 Code signieren Zertifikat verwenden
Verwandt 8.3 Zeitstempel Langzeit-Gültigkeit
Voraussetzung 1.3 CA-Hierarchie Code-Signing-CA

« ← 3.2 Client-Zertifikat | ↑ Zertifikate-Übersicht | 3.4 S/MIME-Zertifikat → »


Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional