Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
openssl [2024/10/14 09:32] jango |
openssl [2025/07/03 11:59] (aktuell) jango [ExtendedKeyUsage] |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | Siehe auch [[ssl|SSL]] | + | Siehe auch [[ssl|SSL]], [[OpenSSL]], |
{{openssl.zip|OpenSSL}} | {{openssl.zip|OpenSSL}} | ||
Zeile 86: | Zeile 86: | ||
=====Zertifikat===== | =====Zertifikat===== | ||
+ | |||
+ | ====Self Signed==== | ||
Konfiguration erstellen. | Konfiguration erstellen. | ||
Zeile 111: | Zeile 113: | ||
</ | </ | ||
+ | ====Key Usage==== | ||
+ | |||
+ | <box green> | ||
+ | |||
+ | 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, | ||
+ | | nonRepudiation | ||
+ | | keyEncipherment | ||
+ | | dataEncipherment | Direktes Verschlüsseln von Nutzdaten | ||
+ | | keyAgreement | ||
+ | | keyCertSign | ||
+ | | cRLSign | ||
+ | | encipherOnly | ||
+ | | decipherOnly | ||
+ | |||
+ | ===ExtendedKeyUsage=== | ||
+ | |||
+ | | Wert | Bedeutung | ||
+ | | **serverAuth** | ||
+ | | **clientAuth** | ||
+ | | **codeSigning** | ||
+ | | **emailProtection** | ||
+ | | **timeStamping** | ||
+ | | **OCSPSigning** | ||
+ | | **msSGC** | ||
+ | | **nsSGC** | ||
+ | | **ipsecEndSystem** | ||
+ | | **ipsecTunnel** | ||
+ | | **ipsecUser** | ||
+ | | **anyExtendedKeyUsage** | Beliebiger Zweck erlaubt (kommt selten vor, unscharf) | ||
+ | | **smartcardLogon** | ||
+ | | **documentSigning** | ||
+ | | **secureEmail** | ||
+ | |||
+ | |||
+ | ===Beispiele=== | ||
+ | |||
+ | Webserver-Zertifikat (TLS/SSL): | ||
+ | |||
+ | < | ||
+ | keyUsage = digitalSignature, | ||
+ | </ | ||
+ | |||
+ | CA-Zertifikat: | ||
+ | |||
+ | < | ||
+ | keyUsage = keyCertSign, | ||
+ | </ | ||
+ | |||
+ | Code Signing: | ||
+ | |||
+ | < | ||
+ | keyUsage = digitalSignature | ||
+ | </ | ||
+ | |||
+ | ====CSR==== | ||
+ | |||
+ | Einen CSR (Certificate signing request) erstellen. | ||
+ | ===OpenSSL Konfig=== | ||
+ | |||
+ | ==Webserver== | ||
+ | < | ||
+ | [ req ] | ||
+ | default_bits | ||
+ | prompt | ||
+ | default_md | ||
+ | distinguished_name | ||
+ | req_extensions | ||
+ | |||
+ | [ dn ] | ||
+ | CN = www.zarat.at | ||
+ | O = Zarat | ||
+ | C = AT | ||
+ | |||
+ | [ req_ext ] | ||
+ | keyUsage = critical, digitalSignature, | ||
+ | extendedKeyUsage = serverAuth | ||
+ | subjectAltName = @alt_names | ||
+ | |||
+ | [ alt_names ] | ||
+ | DNS.1 = www.zarat.at | ||
+ | DNS.2 = zarat.at | ||
+ | </ | ||
+ | |||
+ | ==DocumentSigning== | ||
+ | |||
+ | < | ||
+ | [ req ] | ||
+ | default_bits | ||
+ | prompt | ||
+ | default_md | ||
+ | distinguished_name | ||
+ | req_extensions | ||
+ | |||
+ | [ dn ] | ||
+ | CN = Zarat Signatur | ||
+ | O = Zarat | ||
+ | C = AT | ||
+ | |||
+ | [ req_ext ] | ||
+ | keyUsage = critical, digitalSignature | ||
+ | extendedKeyUsage = codeSigning | ||
+ | subjectAltName = @alt_names | ||
+ | |||
+ | [ alt_names ] | ||
+ | DNS.1 = zarat.at | ||
+ | </ | ||
+ | |||
+ | CSR generieren. | ||
+ | <code bash> | ||
+ | openssl req -new -key private.key -out signing.csr -config openssl-csr.cnf | ||
+ | </ | ||
+ | |||
+ | Diesen CSR sendet man an die CA. | ||
=====CA erstellen===== | =====CA erstellen===== | ||
+ | ROOT-CA Config | ||
< | < | ||
- | ## CA key und ca erstellen | + | [req] |
- | openssl | + | default_bits = 2048 |
+ | prompt = no | ||
+ | default_md = sha256 | ||
+ | distinguished_name = dn | ||
- | ## intermediate key erzeugen | + | [dn] |
- | openssl genrsa | + | C = AT |
+ | ST = Vienna | ||
+ | L = Vienna | ||
+ | O = Root Authority | ||
+ | OU = Root CA | ||
+ | CN = root-ca.local | ||
+ | </ | ||
- | ## intermediate CSR erzeugen | + | INTERMEDIATE-CA Config |
- | openssl req -new -key apitest01.key -out apitest01.csr | + | |
- | ## intermediate mit CA signieren | + | < |
- | openssl x509 -req -in apitest01.csr -CA apitest01-ca.crt -CAkey apitest01-ca.key -set_serial 100 -days 365 -outform PEM -out apitest01.crt | + | [req] |
+ | default_bits = 2048 | ||
+ | prompt = no | ||
+ | default_md = sha256 | ||
+ | distinguished_name = dn | ||
- | ## client key erzeugen | + | [dn] |
- | openssl genrsa | + | C = AT |
+ | ST = Vienna | ||
+ | L = Vienna | ||
+ | O = Brainworx | ||
+ | OU = Intermediate CA | ||
+ | CN = intermediate-ca.local | ||
+ | </ | ||
- | ## client CSR erzeugen | + | CLIENT Config |
- | openssl req -new -key apitest01-client.key -out apitest01-client.csr | + | |
- | ## client cert signieren | + | < |
- | openssl x509 -req -in apitest01-client.csr -CA apitest01-ca.crt -CAkey apitest01-ca.key -set_serial 101 -days 365 -outform PEM -out apitest01-client.crt | + | [req] |
+ | default_bits = 2048 | ||
+ | prompt = no | ||
+ | default_md = sha256 | ||
+ | distinguished_name = dn | ||
- | ## copy ca cert to pki for apache config (set this into the apache config) | + | [dn] |
- | cp apitest01-ca.crt /etc/ | + | C = AT |
+ | ST = Vienna | ||
+ | L = Vienna | ||
+ | O = Brainworx | ||
+ | OU = Cloud Services | ||
+ | CN = nextcloud.local | ||
+ | </code> | ||
- | ## bundle | + | < |
+ | @echo off | ||
+ | |||
+ | @rem Root CA Key und selbst-signiertes Zertifikat erstellen | ||
+ | openssl req -newkey rsa:2048 -nodes -keyout apitest01-ca.key -x509 -days 3650 -out apitest01-ca.crt -config root-openssl.cnf | ||
+ | pause | ||
+ | |||
+ | @rem Intermediate CA Key erzeugen | ||
+ | openssl genrsa -out apitest01-intermediate.key 2048 | ||
+ | pause | ||
+ | |||
+ | @rem Intermediate CA CSR erzeugen | ||
+ | openssl req -new -key apitest01-intermediate.key -out apitest01-intermediate.csr -config intermediate-openssl.cnf | ||
+ | pause | ||
+ | |||
+ | @rem Intermediate CA mit Root CA signieren | ||
+ | openssl x509 -req -in apitest01-intermediate.csr -CA apitest01-ca.crt -CAkey apitest01-ca.key -set_serial 100 -days 3650 -out apitest01-intermediate.crt | ||
+ | pause | ||
+ | |||
+ | @rem Client Key erzeugen | ||
+ | openssl genrsa -out apitest01-client.key 2048 | ||
+ | pause | ||
+ | |||
+ | @rem Client CSR erzeugen | ||
+ | openssl req -new -key apitest01-client.key -out apitest01-client.csr -config client-openssl.cnf | ||
+ | pause | ||
+ | |||
+ | @rem Client Zertifikat mit Intermediate CA signieren | ||
+ | openssl x509 -req -in apitest01-client.csr -CA apitest01-intermediate.crt -CAkey apitest01-intermediate.key -set_serial 101 -days 365 -out apitest01-client.crt | ||
+ | pause | ||
+ | |||
+ | @rem --- Client Zertifikat und Schlüssel in .p12 Datei exportieren --- | ||
+ | @rem Bündle Client Zertifikat und Schlüssel in eine PKCS#12 Datei | ||
openssl pkcs12 -export -inkey apitest01-client.key -in apitest01-client.crt -out apitest01-client.p12 | openssl pkcs12 -export -inkey apitest01-client.key -in apitest01-client.crt -out apitest01-client.p12 | ||
+ | pause | ||
</ | </ | ||
+ | |||
+ | =====Links===== | ||
+ | |||
+ | * [[https:// |