Scenarij 3.3: Izdajanje Code-Signing certifikata

Kategorija: Izdajanje certifikatov
Kompleksnost: ⭐⭐⭐ (Srednje-visoka)
Predpogoji: CSR na voljo, Code-Signing-CA
Predviden čas: 10-15 minut


Opis

Ta scenarij opisuje izdajanje Code-Signing certifikata za podpisovanje programske opreme. Code-Signing omogoča preverjanje izvora in celovitosti izvršljivih datotek, DLL-ov, skript in paketov.

Primeri uporabe:

  • Windows Authenticode (EXE, DLL, MSI)
  • PowerShell skripte
  • Java JAR datoteke
  • NuGet paketi
  • macOS Code Signing
  • Podpisovanje firmware

Primer kode (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();
 
// Izdajanje Code-Signing certifikata
var codesignCert = ctx.IssueCertificate(
    csr,
    issuerCert: caCert,
    issuerKey: caKey,
    serialNumber: ctx.GenerateSerialNumber(),
    validDays: 730,  // 2 leti
    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)
        // URL za časovni žig za dolgoročno validacijo
        .AuthorityInfoAccess(
            ocspUrl: "http://ocsp.example.com",
            timestampUrl: "http://timestamp.example.com"
        )
        .Build()
);
 
codesignCert.ToPemFile("codesign.crt.pem");

Variante Extended Key Usage

OID Ime Uporaba
1.3.6.1.5.5.7.3.3 codeSigning Standardno 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 (opcijsko)

Panožno specifične zahteve

Panoga Zahteva Posebnosti
Avtomobilizem UN R156 Posodobitve firmware, Secure Boot
Zdravstvo DiGAV Programska oprema medicinskih naprav
Industrija 4.0 IEC 62443 PLC firmware
Standard Microsoft Authenticode Windows SmartScreen

Windows Authenticode podpisovanje

# S SignTool in PQ certifikatom
signtool sign /fd SHA256 /f codesign.pfx /p "Password" /tr http://timestamp.example.com /td SHA256 myapp.exe
 
# Preverjanje podpisa
signtool verify /pa /v myapp.exe

Strežniki za časovni žig

Pomembno: Code-Signing brez časovnega žiga je po poteku certifikata neveljaven! Vedno uporabite strežnik za časovni žig.

Strežnik 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

Povezava Scenarij Opis
Naslednji korak 8.2 Podpisovanje kode Uporaba certifikata
Povezano 8.3 Časovni žig Dolgoročna veljavnost
Predpogoj 1.3 Hierarhija CA Code-Signing-CA

« ← 3.2 Odjemalski certifikat | ↑ Pregled certifikatov | 3.4 S/MIME certifikat → »


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

Zuletzt geändert: dne 30.01.2026 ob 00:15