Benutzer-Werkzeuge

Webseiten-Werkzeuge


openssl

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
openssl [2024/10/16 09:47]
jango [CA erstellen]
openssl [2025/07/03 11:59] (aktuell)
jango [ExtendedKeyUsage]
Zeile 1: Zeile 1:
-Siehe auch [[ssl|SSL]]+Siehe auch [[ssl|SSL]], [[OpenSSL]], [[x509]], [[CA]]
  
 {{openssl.zip|OpenSSL}} {{openssl.zip|OpenSSL}}
Zeile 86: Zeile 86:
  
 =====Zertifikat===== =====Zertifikat=====
 +
 +====Self Signed====
  
 Konfiguration erstellen. Konfiguration erstellen.
Zeile 111: Zeile 113:
 </code> </code>
  
 +====Key Usage====
 +
 +<box green>Beim Erstellen eines Certificate Signing Request (CSR) mit OpenSSL kann man im keyUsage Feld festlegen, wofür das Zertifikat verwendet werden darf.</box>
 +
 +keyUsage ist eine X.509 v3 Extension, die festlegt, welche kryptografischen Operationen der Schlüssel ausführen darf.
 +
 +===KeyUsage===
 +
 +^Wert^Bedeutung^
 +| digitalSignature | Unterschreiben von Daten (z.B. TLS-Handshake, E-Mail) |
 +| nonRepudiation   | Beweis der Herkunft (nicht abstreitbar)               |
 +| keyEncipherment  | Verschlüsselung von Schlüsseln (RSA Key Transport)    |
 +| dataEncipherment | Direktes Verschlüsseln von Nutzdaten                  |
 +| keyAgreement     | Schlüsselvereinbarung (Diffie-Hellman, ECDH)          |
 +| keyCertSign      | Signieren von Zertifikaten (CA-Funktion)              |
 +| cRLSign          | Signieren von Certificate Revocation Lists            |
 +| encipherOnly     | Nur Verschlüsselung bei Schlüsselvereinbarung         |
 +| decipherOnly     | Nur Entschlüsselung bei Schlüsselvereinbarung         |
 +
 +===ExtendedKeyUsage===
 +
 +| Wert                    | Bedeutung                                                       |
 +| **serverAuth**          | Authentifizierung eines Servers (z. B. HTTPS-Serverzertifikat)  |
 +| **clientAuth**          | Authentifizierung eines Clients (z. B. VPN- oder E-Mail-Client) |
 +| **codeSigning**         | Signieren von Software oder Skripten                            |
 +| **emailProtection**     | S/MIME – Schutz und Signatur von E-Mails                        |
 +| **timeStamping**        | Signieren von Zeitstempeln (z. B. bei Signaturerstellung)       |
 +| **OCSPSigning**         | Signieren von OCSP-Responses                                    |
 +| **msSGC**               | Microsoft Server Gated Cryptography (veraltet)                  |
 +| **nsSGC**               | Netscape Server Gated Cryptography (veraltet)                   |
 +| **ipsecEndSystem**      | IPsec-Schlüssel für Endsystem (IKE)                             |
 +| **ipsecTunnel**         | IPsec-Schlüssel für Tunnelmodus                                 |
 +| **ipsecUser**           | IPsec-Schlüssel für Benutzer                                    |
 +| **anyExtendedKeyUsage** | Beliebiger Zweck erlaubt (kommt selten vor, unscharf)           |
 +| **smartcardLogon**      | Authentifizierung via Smartcard                                 |
 +| **documentSigning**     | Signieren von Dokumenten                                        |
 +| **secureEmail**         | Alternative Bezeichnung für emailProtection (RFC 5280)          |
 +
 +
 +===Beispiele===
 +
 +Webserver-Zertifikat (TLS/SSL):
 +
 +<code>
 +keyUsage = digitalSignature, keyEncipherment
 +</code>
 +
 +CA-Zertifikat:
 +
 +<code>
 +keyUsage = keyCertSign, cRLSign
 +</code>
 +
 +Code Signing:
 +
 +<code>
 +keyUsage = digitalSignature
 +</code>
 +
 +====CSR====
 +
 +Einen CSR (Certificate signing request) erstellen.
 +===OpenSSL Konfig===
 +
 +==Webserver==
 +<code>
 +[ req ]
 +default_bits        = 4096
 +prompt              = no
 +default_md          = sha256
 +distinguished_name  = dn
 +req_extensions      = req_ext
 +
 +[ dn ]
 +CN = www.zarat.at
 +O = Zarat
 +C = AT
 +
 +[ req_ext ]
 +keyUsage = critical, digitalSignature, keyEncipherment
 +extendedKeyUsage = serverAuth
 +subjectAltName = @alt_names
 +
 +[ alt_names ]
 +DNS.1 = www.zarat.at
 +DNS.2 = zarat.at
 +</code>
 +
 +==DocumentSigning==
 +
 +<code>
 +[ req ]
 +default_bits        = 4096
 +prompt              = no
 +default_md          = sha256
 +distinguished_name  = dn
 +req_extensions      = req_ext
 +
 +[ dn ]
 +CN = Zarat Signatur
 +O = Zarat
 +C = AT
 +
 +[ req_ext ]
 +keyUsage = critical, digitalSignature
 +extendedKeyUsage = codeSigning
 +subjectAltName = @alt_names
 +
 +[ alt_names ]
 +DNS.1 = zarat.at
 +</code>
 +
 +CSR generieren.
 +<code bash>
 +openssl req -new -key private.key -out signing.csr -config openssl-csr.cnf
 +</code>
 +
 +Diesen CSR sendet man an die CA.
 =====CA erstellen===== =====CA erstellen=====
  
Zeile 202: Zeile 322:
 pause pause
 </code> </code>
 +
 +=====Links=====
 +
 +  * [[https://docs.openssl.org/3.4/man1/openssl/#standard-commands|Docs]]
openssl.1729064868.txt.gz · Zuletzt geändert: 2024/10/16 09:47 von jango