Kategorija: Izdavanje certifikata
Složenost: ⭐⭐⭐ (Srednje-Visoka)
Preduvjeti: CSR dostupan, Code-Signing-CA
Procijenjeno vrijeme: 10-15 minuta
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:
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");
| 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) |
| 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 |
# 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
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 |
| 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