|
|
| (33 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) |
| Zeile 1: |
Zeile 1: |
| *[[openssl prinzip]] | | =Main= |
| *[[openssl howto one]] | | *[[TLS vs. SSL]] |
| *[[openssl howto two]] | | *[[tls funktion]] |
| | *[[TLS Prinzip Simple]] |
| | *[[TLS Prinzip]] |
| | *[[TLS Protokoll]] |
| | *[[openssl howto]] |
| | *[[ca install]] |
| | *[[xinuxpki]] |
| | *[[X509 ruck zuck]] |
| | *[[X509 Begriffe]] |
| | *[[Letsencrypt]] |
| | *[[SSL Inspection]] |
| | *[[Site inspection]] |
| | *[[acme.json]] |
| | *[[XCA]] |
| | *[[openssl Tools]] |
| | *[[Container-Formate für Zertifikate]] |
| | *[[Openssl Skripte]] |
| | *[[Zentrale Einbindung von TLS-Zertifikaten für Mail- und Webdienste]] |
|
| |
|
| | | =Links= |
| | | *https://github.com/wpbrown/openssl-keylog |
| '''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
| |
| | |
| [[Datei: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 ...
| |
| | |
| [[Datei: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 huey.xinux.org.csr | grep -A 4 "Requested Extensions"
| |
| <pre>
| |
| Requested Extensions:
| |
| X509v3 Extended Key Usage:
| |
| TLS Web Server Authentication
| |
| X509v3 Subject Alternative Name:
| |
| DNS:huey.xinux.org
| |
| | |
| </pre>
| |
| | |
| ==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
| |
| <pre>
| |
| 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
| |
| | |
| </pre>
| |
| | |
| =experimental=
| |
| openssl.cnf
| |
| copy_extensions = copy
| |
| ....
| |
| zertifzieren mit ca anstatt x509 ...
| |
| openssl ca -cert ca.crt -days 3650 -keyfile ca.key -in $CLIENT.csr -out $CLIENT.crt
| |
| | |
| openssl ca -passin env:PASS -cert ca.crt -days 3650 -keyfile ca.key -batch -in $COMMON_NAME.csr -out $COMMON_NAME.crt
| |
| | |
| ....
| |
| *http://www.phildev.net/ssl/opensslconf.html
| |
| *http://stackoverflow.com/questions/21297139/how-do-you-sign-openssl-certificate-signing-requests-with-your-certification-aut | |
| | |
| | |
| ==Links==
| |
| | |
| * http://www.absolute-cool.de/dokus/ssl/openssl/
| |
| * http://www.tecchannel.de/netzwerk/wan/401848/workshop_vpn_mit_linux/index16.html
| |
| * http://www.tecchannel.de/netzwerk/wan/401848/workshop_vpn_mit_linux/
| |
| * http://www.dfn-cert.de/informationen/themen/verschluesselung_und_pki/openssl-kurzreferenz.html
| |
| * http://www.pro-ite.net/blog/index.php?/archives/218-Root-Zertifikat-dauerhaft-in-Windows-7-WIN7-speichern.html
| |
| * http://www.werthmoeller.de/doc/microhowtos/openssl/
| |