Inhaltsverzeichnis

Szenario 3.1: Server-Zertifikat ausstellen

Kategorie: Zertifikate ausstellen
Komplexität: ⭐⭐⭐ (Mittel-Hoch)
Voraussetzungen: CSR vorhanden, Intermediate-CA
Geschätzte Zeit: 10-15 Minuten


Beschreibung

Dieses Szenario beschreibt die Ausstellung eines TLS-Serverzertifikats durch eine Intermediate-CA. Das Zertifikat ermöglicht HTTPS-Verschlüsselung für Webserver, APIs und andere TLS-geschützte Dienste.

Was wird erstellt:


Workflow

flowchart LR CSR[CSR laden] --> VERIFY[CSR verifizieren] VERIFY --> EXT[Extensions setzen] EXT --> SERIAL[Serial generieren] SERIAL --> SIGN[Mit CA signieren] SIGN --> EXPORT[Als PEM exportieren] style SIGN fill:#e8f5e9


Code-Beispiel (C#)

using WvdS.Security.Cryptography.X509Certificates.Extensions.PQ;
 
using var ctx = PqCryptoContext.Initialize();
 
// Intermediate-CA laden
var caCert = ctx.LoadCertificate("intermediate-ca.crt.pem");
var caKey = ctx.LoadPrivateKey("intermediate-ca.key.pem", "CaPassword!");
 
// CSR laden und verifizieren
var csr = ctx.LoadCertificateRequest(File.ReadAllText("server.csr.pem"));
if (!csr.VerifySignature())
    throw new CryptographicException("Ungültige CSR-Signatur");
 
// Server-Zertifikat ausstellen
var serverCert = ctx.IssueCertificate(
    csr,
    issuerCert: caCert,
    issuerKey: caKey,
    serialNumber: ctx.GenerateSerialNumber(),
    validDays: 365,  // 1 Jahr
    extensions: new ExtBuilder()
        // Basic Constraints: Kein CA
        .BasicConstraints(ca: false, critical: true)
        // Key Usage für TLS
        .KeyUsage(KeyUsageFlags.DigitalSignature | KeyUsageFlags.KeyEncipherment, critical: true)
        // Extended Key Usage: Server Auth
        .ExtendedKeyUsage(ExtKeyUsage.ServerAuth)
        // Subject Key Identifier
        .SubjectKeyIdentifier(csr.PublicKey)
        // Authority Key Identifier
        .AuthorityKeyIdentifier(caCert)
        // CRL Distribution Point
        .CrlDistributionPoint("http://crl.example.com/intermediate.crl")
        // OCSP Responder
        .AuthorityInfoAccess(
            ocspUrl: "http://ocsp.example.com",
            caIssuersUrl: "http://ca.example.com/intermediate.crt"
        )
        .Build()
);
 
// Speichern
serverCert.ToPemFile("server.crt.pem");
 
// Zertifikatskette erstellen
var chain = $"{serverCert.ToPem()}\n{caCert.ToPem()}";
File.WriteAllText("server-chain.pem", chain);
 
Console.WriteLine("Server-Zertifikat ausgestellt:");
Console.WriteLine($"  Subject: {serverCert.Subject}");
Console.WriteLine($"  Issuer: {serverCert.Issuer}");
Console.WriteLine($"  Serial: {serverCert.SerialNumber}");
Console.WriteLine($"  Gültig bis: {serverCert.NotAfter:yyyy-MM-dd}");

Extensions für Server-Zertifikate

Extension Wert Critical Beschreibung
Basic Constraints CA=false Kein CA-Zertifikat
Key Usage digitalSignature, keyEncipherment TLS-Handshake
Extended Key Usage serverAuth Server-Authentifizierung
Subject Key Identifier Hash(PublicKey) Schlüssel-ID
Authority Key Identifier CA-SKI Issuer-Referenz
Subject Alt Name DNS-Namen Aus CSR übernommen
CRL Distribution Points URL Revocation-Prüfung
Authority Info Access OCSP, CA Issuers Validierungshilfen

Branchenspezifische Gültigkeiten

Branche Gültigkeit Begründung
Standard IT 1 Jahr (365 Tage) CA/Browser Forum Maximum
Energie/SCADA 3-5 Jahre Lange Wartungszyklen
Healthcare 1-2 Jahre Compliance-Anforderungen
Automotive 2-3 Jahre Fahrzeug-Lebenszyklus

Empfehlung: Für öffentliche Websites max. 398 Tage (CA/B Forum). Für interne Dienste können längere Gültigkeiten sinnvoll sein.


Ausgabe-Dateien

server.crt.pem

-----BEGIN CERTIFICATE-----
MIIHxjCCBiagAwIBAgIUP7J2kM9x...
-----END CERTIFICATE-----

server-chain.pem

-----BEGIN CERTIFICATE-----
(Server-Zertifikat)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Intermediate-CA)
-----END CERTIFICATE-----

Nginx Konfiguration

server {
    listen 443 ssl;
    server_name www.example.com;
 
    ssl_certificate     /etc/nginx/ssl/server-chain.pem;
    ssl_certificate_key /etc/nginx/ssl/server.key.pem;
 
    ssl_protocols TLSv1.3;
    ssl_prefer_server_ciphers on;
}

Verwandte Szenarien

Beziehung Szenario Beschreibung
Voraussetzung 2.1 Server-CSR CSR erstellen
Voraussetzung 1.2 Intermediate-CA Signierende CA
Nächster Schritt 10.1 TLS-Server einrichten Zertifikat deployen
Verwandt 3.2 Client-Zertifikat Für mTLS

« ← Zertifikate-Übersicht | ↑ Szenarien | 3.2 Client-Zertifikat → »


Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional