Openssl

Aus xinux.net
Zur Navigation springen Zur Suche springen

Auflistung einiger Beispiele für openssl: (Mehr Informationen auf www.openssl.org)


Prinzip

Signieren

Wenn man einen Webserver hat und will diesen nun verschlüsselt betreiben generiert man ein Schlüsselpaar einen privkey-s und einen pubkey-s. Den Pubkey-s schickt man nun an einen Zertifizerungsstelle, diese bildet nun einen Hashwert hash-s (der einfachste Hash ist eine Quersumme wie in der Schule). dieser hash wird nun mit dem privkey-ca verschlüsselt, das Teil nennt man nun signature-s diese wird an den pubkey-s angehängt, man nennt dies nun certifkat-s und es wird zum Server zurück geschickt ...

man baut dies dann in seinen Websever ein ... fertig

Signierung.jpg

Authentifzieren

Wenn nun ein client auf den Webserver zugreift macht er eine Anfrage ... der Server schickt nun das certifikat-s zum Client ... der teilt nun dieses wieder auf in pubkey-s und signature-s und bildet einen hash aus dem pubkey-s genau wie vorher in der Zertifzierungstelle. nennen wir diesen mal X ... so und nun kommst: die signature-s haben wir bekommen als in der zertifizierungstelle den hash-s mit dem privkey-ca verschlüsselt haben ... wenn wir nun die signature-s wieder mit dem pubkey-ca verschlüsseln haben wir wieder den orginal hash-s denn wir nun Y nennen ...

wenn X = Y ist die authentifzierung erfolgreich ...

Auth.jpg

client name setzen

CLIENT="client"


CA erstellen

3des

openssl genrsa -des3 -out ca.key 1024

CA selbst signieren

openssl req -new -key ca.key -x509 -days 3650 -out ca.crt

Erstellen eines Privat Keys

openssl genrsa -des3 -out ${CLIENT}.key 1024

Erstellen einer CSR (Certificate Signing Request):

openssl req -new -key ${CLIENT}.key -out ${CLIENT}.csr

Key signieren

openssl x509 -req -days 730 -in ${CLIENT}.csr  -CA ca.crt  -CAkey ca.key -CAcreateserial -out ${CLIENT}.crt

Überprüfung der Gültigkeit eines Zertifikates:

openssl verify -CAfile ca.crt ${CLIENT}.crt 

client.crt: OK

Anzeigen des Zertifikat

openssl x509 -noout -text -in ${CLIENT}.crt 

Auslesen des Subjects und Serial-Nr.:

openssl x509 -noout -subject -serial -in ${CLIENT}.crt 

subject= /C=de/ST=rlp/L=zweibruecken/O=xinux/OU=edv/CN=client/emailAddress=technik@xinux.de
serial=F5006B108B6B267B

Erstellen einer CRL (Certificate Revoke Liste):

openssl ca -config <Konfigurationsdatei> -gencrl -out <CRL-file>

Umwandeln der CRL ins DER-Format (Notwendig zum Importieren):

openssl crl -inform PEM -outform DER -in <CRL-File> -out <CRL-File im DER-Format>

Zurückrufen (revoke) eines Zertifikates:

openssl ca -config <Konfigurationsdatei> -revoke <Zertifikat>

Request signieren:

openssl ca -notext -in request.req -out signiert.pem


Aufbau einer SSL Verbindung mit einem Server:

openssl s_client -connect <server>:<Port>


Starten eines SSL-Servers

openssl s_server -CAfile <Zertifikat> -key <Privat key der CA> -cert <Zertifikat des Servers> -accept <Port> -WWW
-WWW : Emuliert einen einfachen Web-server auf angeegenen Port

P12 = PFX

Umwandlung von pem in PKCS12 Format

Mit CA certifikat

openssl pkcs12 -export -in cert.pem -inkey key.pem -certfile ca.crt -out cred.p12

Ohne CA certifikat

openssl pkcs12 -export -in cert.pem -inkey key.pem -out cred.p12


openssl P12->PEM

Um Windows Zertifikate unter Linux/openssl verwenden zu können, müssen aus der keyfile.p12-Datei die x509 Zertifikate exportiert werden.

openssl pkcs12 -clcerts -nokeys -out cert.pem -in cert.p12
openssl pkcs12 -cacerts -nokeys -out root.pem -in cert.p12
openssl pkcs12 -nocerts -out private-key.pem  -in cert.p12

Jetzt können diese wieder verwendet werden.

openssl x509 -text -noout -md5 -in private-key.pem
openssl x509 -text -noout -md5 -in root.pem
openssl x509 -text -noout -md5 -in cert.pem

pkcs12 Container entpacken

Ca.crt

root@hutze:~/p12# openssl pkcs12 -in <pkcs12-datei> -cacerts -nomacver -nokeys -out <ca.crt> -password pass:geheim

Client.crt

root@hutze:~/p12# openssl pkcs12 -in <pkcs12-datei> -clcerts -nomacver -nokeys -out <client.crt> -password pass:geheim 

Client.key

root@hutze:~/p12# openssl pkcs12 -in <pkcs12-datei> -nocerts -nodes -nomacver -out <client.key> -password pass:geheim

reqext in $CLIENT.cnf

[ server-ext ]
extendedKeyUsage = serverAuth, 1.3.6.1.5.5.8.2.2
subjectAltName = DNS:huey.xinux.org

request

openssl req -new -key ${CLIENT}.key -out ${CLIENT}.csr -config ${CLIENT}.cnf -reqexts server-ext

show

openssl req -text -noout -in $CLIENT.csr

Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=de, ST=rlp, L=zw, O=willux, OU=it, CN=huey.xinux.org
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (1024 bit)
                Modulus:
                    00:e2:7e:7c:c0:af:d7:67:9d:f6:f7:5c:51:95:60:
                    40:9b:be:6a:1b:be:67:ea:86:ec:ee:b1:4a:d3:9c:
                    3c:88:dd:14:a0:51:7e:0d:ea:fa:0f:13:ed:66:d6:
                    b3:c9:0c:da:33:65:f3:a8:77:6e:95:43:d8:84:c7:
                    14:cc:cd:d5:42:bb:b6:61:b3:9c:4e:8a:80:7e:25:
                    9b:bf:fd:8d:88:cf:95:bf:32:3c:d7:e7:ca:dd:0a:
                    73:0c:d0:4b:a6:48:73:3c:0a:68:90:2b:14:e3:71:
                    c2:85:a1:b2:5e:02:2d:77:fc:be:fb:5a:c7:e8:47:
                    8d:34:54:ea:57:02:9c:a8:23
                Exponent: 65537 (0x10001)
        Attributes:
        Requested Extensions:
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, 1.3.6.1.5.5.8.2.2
            X509v3 Subject Alternative Name:
                DNS:huey.xinux.org
    Signature Algorithm: sha256WithRSAEncryption
         2d:8c:0e:fe:06:37:32:39:47:91:e8:7e:5e:33:47:6b:64:76:
         3e:6e:43:b0:0d:16:42:01:ac:70:2b:a7:2f:78:cb:ad:04:51:
         37:68:6f:51:0d:4c:ef:ea:7e:14:83:cd:63:d1:e8:aa:15:2a:
         53:eb:e7:c6:0c:28:f4:67:ef:bc:40:88:f4:f7:b0:a5:39:9d:
         86:3f:15:95:38:d7:4c:33:8e:9c:66:0f:e9:1f:d0:32:df:7a:
         5d:a3:67:89:8b:7d:81:67:23:46:9d:ab:31:eb:e3:a4:3d:4e:
         ab:bd:78:4d:78:81:91:db:8d:34:f7:8b:21:c2:34:26:0b:d3:
         d1:94

sign

openssl x509 -CA ca.crt -CAkey ca.key -CAserial serial -sha1 -in $COMMON_NAME.csr -req -out $COMMON_NAME.crt -extfile $COMMON_NAME.cnf -extensions server-ext

show

openssl x509 -noout -text -in huey.xinux.org.crt

openssl x509 -noout -text -in huey.xinux.org.crt  | grep -A 4 "X509v3 extensions"
        X509v3 extensions:
            X509v3 Extended Key Usage: 
                TLS Web Server Authentication
            X509v3 Subject Alternative Name: 
                DNS:huey.xinux.org

Links