~~NOTOC~~ ====== 12. Uvoz/Izvoz ====== **Scenariji:** 4 \\ **FFI funkcije:** ~30 \\ **Status:** ⏳ Načrtovano Ta kategorija zajema vse scenarije za uvoz in izvoz certifikatov in ključev. PEM, PFX/PKCS#12, PKCS#7 in interoperabilnost z drugimi sistemi. ---- ===== Scenariji ===== ^ ID ^ Scenarij ^ Opis ^ Kompleksnost ^ Status ^ | [[.:pem_export|12.1]] | PEM izvoz/uvoz | Base64 kodirani certifikati | ⭐⭐ | ⏳ | | [[.:pfx_export|12.2]] | PFX/PKCS#12 | Certifikat + zasebni ključ paket | ⭐⭐⭐ | ⏳ | | [[.:pkcs7_chain|12.3]] | PKCS#7 veriga | Izvoz certifikatne verige | ⭐⭐ | ⏳ | | [[.:interop|12.4]] | Interoperabilnost | OpenSSL, Windows, Java | ⭐⭐⭐⭐ | ⏳ | ---- ===== Formati ===== flowchart TB subgraph CERT["📜 Certifikati"] PEM_C[".crt.pem
Base64 + glava"] DER_C[".crt.der
Binarni DER"] end subgraph KEY["🔑 Ključi"] PEM_K[".key.pem
PKCS#8 Base64"] DER_K[".key.der
PKCS#8 binarni"] ENC_K[".key.enc.pem
Šifriran PKCS#8"] end subgraph BUNDLE["📦 Paketi"] PFX[".pfx / .p12
Cert + Key"] P7B[".p7b
Cert veriga"] end PEM_C <--> DER_C PEM_K <--> DER_K PEM_K <--> ENC_K PEM_C --> PFX PEM_K --> PFX PEM_C --> P7B style PFX fill:#e8f5e9 style P7B fill:#e3f2fd
---- ===== Pregled formatov ===== ^ Format ^ Končnica ^ Vsebuje ^ Šifrirano ^ Uporaba ^ | **PEM** | .pem, .crt, .key | Posamezni objekti | Opcijsko | Linux, OpenSSL | | **DER** | .der, .cer | Posamezni objekti | Ne | Binarni protokoli | | **PFX/PKCS#12** | .pfx, .p12 | Cert + Key + veriga | Da | Windows, Java | | **PKCS#7** | .p7b, .p7c | Certifikatna veriga | Ne | Distribucija verig | | **JKS** | .jks | Java KeyStore | Da | Java aplikacije | ---- ===== Interoperabilnost ===== ^ Od/Do ^ OpenSSL ^ Windows ^ Java ^ .NET ^ | **OpenSSL** | - | PFX | PKCS#7 → JKS | PEM | | **Windows** | PFX → PEM | - | PFX | PFX | | **Java** | JKS → PEM | JKS → PFX | - | PFX | | **.NET** | PEM | PFX | PFX | - | ---- ===== Hiter začetek s kodo ===== ==== PEM izvoz ==== // Certifikat kot PEM string certPem = certificate.ToPem(); File.WriteAllText("server.crt.pem", certPem); // Zasebni ključ šifriran kot PEM string keyPem = privateKey.ToEncryptedPem( password: securePassword, algorithm: EncryptionAlgorithm.Aes256Gcm ); File.WriteAllText("server.key.pem", keyPem); ==== PFX/PKCS#12 izvoz ==== // Ustvarjanje PFX s certifikatom, ključem in verigo byte[] pfxData = ctx.ExportToPfx( certificate: serverCert, privateKey: serverKey, chain: new[] { intermediateCert, rootCert }, password: pfxPassword, friendlyName: "Server Certificate" ); File.WriteAllBytes("server.pfx", pfxData); ==== PFX uvoz ==== // Nalaganje PFX var (cert, key, chain) = ctx.ImportFromPfx( pfxPath: "server.pfx", password: pfxPassword ); Console.WriteLine($"Certifikat: {cert.Subject}"); Console.WriteLine($"Dolžina verige: {chain.Length}"); ==== PKCS#7 izvoz verige ==== // Certifikatna veriga kot P7B byte[] p7bData = ctx.ExportChainToPkcs7( certificates: new[] { serverCert, intermediateCert, rootCert } ); File.WriteAllBytes("chain.p7b", p7bData); ---- ===== OpenSSL ukazi ===== ==== PEM → PFX ==== openssl pkcs12 -export \ -in server.crt.pem \ -inkey server.key.pem \ -certfile chain.pem \ -out server.pfx \ -name "Server Certificate" ==== PFX → PEM ==== # Ekstrakcija certifikata openssl pkcs12 -in server.pfx -clcerts -nokeys -out server.crt.pem # Ekstrakcija zasebnega ključa openssl pkcs12 -in server.pfx -nocerts -out server.key.pem # Ekstrakcija verige openssl pkcs12 -in server.pfx -cacerts -nokeys -out chain.pem ==== DER → PEM ==== openssl x509 -in cert.der -inform DER -out cert.pem -outform PEM ---- ===== Povezane kategorije ===== ^ Kategorija ^ Povezava ^ | [[.:schluessel:start|11. Upravljanje ključev]] | Izvoz ključev | | [[.:verwaltung:start|4. Upravljanje certifikatov]] | Varnostna kopija/obnova | | [[.:tls:start|10. TLS/mTLS]] | Namestitev certifikatov | ---- << [[sl:int:pqcrypt:szenarien:schluessel:start|← 11. Upravljanje ključev]] | [[sl:int:pqcrypt:szenarien:start|↑ Scenariji]] | [[sl:int:pqcrypt:start|🏠 Začetna stran →]] >> ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional// {{tag>kategorija uvoz izvoz pem pfx pkcs12 pkcs7 interop}}