Inhaltsverzeichnis

Scenarij 3.3: Izdavanje Code-Signing certifikata

Kategorija: Izdavanje certifikata
Složenost: ⭐⭐⭐ (Srednje-Visoka)
Preduvjeti: CSR dostupan, Code-Signing-CA
Procijenjeno vrijeme: 10-15 minuta


Opis

Ovaj scenarij opisuje izdavanje Code-Signing certifikata za potpisivanje softvera. Code-Signing omogućuje verifikaciju podrijetla i integriteta izvršnih datoteka, DLL-ova, skripti i paketa.

Slučajevi uporabe:


Primjer koda (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();
 
// Izdavanje Code-Signing certifikata
var codesignCert = ctx.IssueCertificate(
    csr,
    issuerCert: caCert,
    issuerKey: caKey,
    serialNumber: ctx.GenerateSerialNumber(),
    validDays: 730,  // 2 godine
    extensions: new ExtBuilder()
        .BasicConstraints(ca: false, critical: true)
        // Key Usage: Samo digitalSignature!
        .KeyUsage(KeyUsageFlags.DigitalSignature, critical: true)
        // Extended Key Usage: Code Signing
        .ExtendedKeyUsage(ExtKeyUsage.CodeSigning)
        .SubjectKeyIdentifier(csr.PublicKey)
        .AuthorityKeyIdentifier(caCert)
        // Timestamping URL za dugotrajnu validaciju
        .AuthorityInfoAccess(
            ocspUrl: "http://ocsp.example.com",
            timestampUrl: "http://timestamp.example.com"
        )
        .Build()
);
 
codesignCert.ToPemFile("codesign.crt.pem");

Varijante Extended Key Usage

OID Naziv Uporaba
1.3.6.1.5.5.7.3.3 codeSigning Standardno potpisivanje koda
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 (opcionalno)

Zahtjevi specifični po industrijama

Industrija Zahtjev Posebnosti
Automobilska UN R156 Ažuriranja firmwarea, Secure Boot
Zdravstvo DiGAV Softver medicinskih proizvoda
Industrija 4.0 IEC 62443 PLC firmware
Standard Microsoft Authenticode Windows SmartScreen

Windows Authenticode potpisivanje

# Sa SignTool i PQ-certifikatom
signtool sign /fd SHA256 /f codesign.pfx /p "Password" /tr http://timestamp.example.com /td SHA256 myapp.exe
 
# Provjera potpisa
signtool verify /pa /v myapp.exe

Timestamp poslužitelj

Važno: Code-Signing bez Timestampa je nevažeći nakon isteka certifikata! Uvijek koristite Timestamp poslužitelj.

Poslužitelj URL Protokol
DigiCert http://timestamp.digicert.com RFC 3161
Sectigo http://timestamp.sectigo.com RFC 3161
GlobalSign http://timestamp.globalsign.com RFC 3161

Povezani scenariji

Odnos Scenarij Opis
Sljedeći korak 8.2 Potpisivanje koda Uporaba certifikata
Povezano 8.3 Vremenski žig Dugotrajna valjanost
Preduvjet 1.3 CA hijerarhija Code-Signing-CA

« ← 3.2 Klijentski certifikat | ↑ Pregled certifikata | 3.4 S/MIME certifikat → »


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