~~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}}