Inhaltsverzeichnis
Scenario 3.3: Emettere certificato code-signing
Categoria: Emettere certificati
Complessità: Media
Prerequisiti: CSR presente, CA Code-Signing
Tempo stimato: 10-15 minuti
Descrizione
Questo scenario descrive l'emissione di un certificato code-signing per la firma di software. Il code-signing consente la verifica dell'origine e dell'integrità di eseguibili, DLL, script e package.
Casi d'uso:
- Windows Authenticode (EXE, DLL, MSI)
- Script PowerShell
- File JAR Java
- Package NuGet
- Code Signing macOS
- Firma firmware
Esempio codice (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");
Varianti Extended Key Usage
| OID | Nome | Utilizzo |
|---|---|---|
| 1.3.6.1.5.5.7.3.3 | codeSigning | Code Signing standard |
| 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 (opzionale) |
Requisiti specifici per settore
| Settore | Requisito | Particolarità |
|---|---|---|
| Automotive | UN R156 | Aggiornamenti firmware, Secure Boot |
| Sanità | DiGAV | Software dispositivi medici |
| Industria 4.0 | IEC 62443 | Firmware PLC |
| Standard | Microsoft Authenticode | Windows SmartScreen |
Firma Windows Authenticode
# 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
Server Timestamp
Importante: Code-signing senza timestamp non è valido dopo la scadenza del certificato! Utilizzare sempre un server timestamp.
| Server | URL | Protocollo |
|---|---|---|
| DigiCert | http://timestamp.digicert.com | RFC 3161 |
| Sectigo | http://timestamp.sectigo.com | RFC 3161 |
| GlobalSign | http://timestamp.globalsign.com | RFC 3161 |
Scenari correlati
| Relazione | Scenario | Descrizione |
|---|---|---|
| Passo successivo | 8.2 Firmare codice | Utilizzare certificato |
| Correlato | 8.3 Timestamp | Validità a lungo termine |
| Prerequisito | 1.3 Gerarchia CA | CA Code-Signing |
« ← 3.2 Certificato client | ↑ Panoramica certificati | 3.4 Certificato S/MIME → »
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional
Zuletzt geändert: il 30/01/2026 alle 07:18