Openssl
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
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 ...
CA erstellen
openssl genrsa -aes256 -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 -aes256 -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 openvpn-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
Courier ssl aus eigner CA
cat hostname.key hostname.crt > /etc/courier/hostname.pem openssl gendh >> /etc/courier/hostname.pem /etc/init.d/courier-imap-ssl restart
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