Inhaltsverzeichnis
Scenarij 2.1: Ustvarjanje strežniškega CSR
Kategorija: Zahteve za certifikate (CSR)
Kompleksnost: 2/5 (Srednja)
Predpogoji: Par ključev na voljo
Ocenjeni čas: 5-10 minut
Opis
Ta scenarij opisuje ustvarjanje Certificate Signing Request (CSR) za TLS-strežniški certifikat. CSR vsebuje vse informacije, ki jih CA potrebuje za izdajo strežniškega certifikata.
Kaj se ustvari:
- ML-DSA-65 par ključev (ali hibridni)
- CSR s strežniškim DN in razširitvami
- Subject Alternative Names (SAN) za DNS-imena
Primeri uporabe:
- HTTPS spletni strežniki
- API-končne točke
- Mikrostoritve s TLS
Potek dela
flowchart LR
KEY[Generiranje para ključev] --> DN[Ustvarjanje DN]
DN --> EXT[Nastavitev razširitev]
EXT --> CSR[Ustvarjanje CSR]
CSR --> SIGN[Podpisovanje CSR]
SIGN --> EXPORT[Izvoz kot PEM]
style CSR fill:#e8f5e9
Vključene funkcije
| Korak | FFI-funkcija | Opis |
|---|---|---|
| 1 | wvds_sec_crypto_x509_keypair_generate_mldsa(65) | Generiranje para ključev |
| 2 | wvds_sec_crypto_x509_dn_create() | Ustvarjanje DN-ročaja |
| 3 | wvds_sec_crypto_x509_dn_add_component() | Dodajanje CN, O, C |
| 4 | wvds_sec_crypto_x509_ext_set_san_dns() | Dodajanje DNS-imen |
| 5 | wvds_sec_crypto_x509_ext_set_key_usage() | digitalSignature, keyEncipherment |
| 6 | wvds_sec_crypto_x509_ext_set_eku() | serverAuth |
| 7 | wvds_sec_crypto_x509_csr_create() | Ustvarjanje CSR |
| 8 | wvds_sec_crypto_x509_csr_sign() | Podpisovanje CSR z zasebnim ključem |
| 9 | wvds_sec_crypto_x509_csr_to_pem() | Izvoz kot PEM |
Primer kode (C#)
using WvdS.Security.Cryptography.X509Certificates.Extensions.PQ; // 1. Inicializacija konteksta using var ctx = PqCryptoContext.Initialize(); // 2. Generiranje para ključev za strežnik using var serverKey = ctx.GenerateKeyPair(PqAlgorithm.MlDsa65); // 3. Distinguished Name var dn = new DnBuilder() .AddCN("www.example.com") .AddO("Example d.o.o.") .AddOU("IT-oddelek") .AddC("SI") .AddL("Ljubljana") .Build(); // 4. Razširitve za strežniški certifikat var extensions = new ExtBuilder() .SubjectAlternativeName(new[] { "www.example.com", "example.com", "api.example.com" }) .KeyUsage(KeyUsageFlags.DigitalSignature | KeyUsageFlags.KeyEncipherment) .ExtendedKeyUsage(ExtKeyUsage.ServerAuth) .Build(); // 5. Ustvarjanje in podpisovanje CSR var csr = ctx.CreateCertificateRequest(serverKey, dn, extensions); // 6. Shranjevanje kot PEM File.WriteAllText("server.csr.pem", csr.ToPem()); File.WriteAllText("server.key.pem", serverKey.ToEncryptedPem("VarnoGeslo123!")); Console.WriteLine("CSR ustvarjen: server.csr.pem"); Console.WriteLine($"Subject: {csr.Subject}"); Console.WriteLine($"SANs: {string.Join(", ", csr.SubjectAlternativeNames)}");
Parametri
Subject Alternative Names
| Tip | Predpona | Primer |
|---|---|---|
| DNS-ime | dns: | www.example.com |
| IP-naslov | ip: | 192.168.1.100 |
| E-pošta | email: | admin@example.com |
| URI | uri: | https://example.com |
Key Usage za strežnike
| Zastavica | Opis | Obvezno |
|---|---|---|
| digitalSignature | Podpisovanje TLS-handshake | Da |
| keyEncipherment | RSA Key Exchange (ne za ECDHE) | Opcijsko |
| keyAgreement | ECDH Key Exchange | Opcijsko |
Izhodne datoteke
server.csr.pem
-----BEGIN CERTIFICATE REQUEST----- MIICxjCCAi0CAQAwgYExCz... (Base64 DER) -----END CERTIFICATE REQUEST-----
| Polje | Vrednost |
|---|---|
| Version | 1 (0x00) |
| Subject | CN=www.example.com, O=Example d.o.o., C=SI |
| Public Key | ML-DSA-65 (~1.952 bajtov) |
| Attributes | Extension Request (SAN, Key Usage, EKU) |
| Signature | ML-DSA-65 (Self-Proof-of-Possession) |
Pogoste napake
| Problem | Vzrok | Rešitev |
|---|---|---|
| CSR zavrnjen | CN ni v SAN | CN vedno dodajte tudi kot SAN |
| CA ne sprejme CSR | Napačen format | Preverite PEM-format |
| Key Usage manjka | Razširitve niso nastavljene | Uporabite ExtBuilder |
Povezani scenariji
| Povezava | Scenarij | Opis |
|---|---|---|
| Naslednji korak | 3.1 Strežniški certifikat | Podpis CSR s strani CA |
| Alternativa | 2.3 Multi-SAN CSR | Več domen |
| Povezano | 2.2 Odjemalčev CSR | Za overitev odjemalca |
« Pregled CSR | Scenariji | 2.2 Odjemalčev CSR »
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional
Zuletzt geändert: dne 30.01.2026 ob 01:39