|
|
Zeile 1: |
Zeile 1: |
− | <h2>OpenSSL</h2>
| |
| [http://openssl.org/docs/apps/openssl.html OpenSSL] lässt sich für verschiedene Krypto-Operationen nutzen, so z.B. Erstellen und verwalten von verschiedenen Schlüsseltypen, Erstellen von Zertifikaten, verschlüsseln/entschlüsseln...<br> | | [http://openssl.org/docs/apps/openssl.html OpenSSL] lässt sich für verschiedene Krypto-Operationen nutzen, so z.B. Erstellen und verwalten von verschiedenen Schlüsseltypen, Erstellen von Zertifikaten, verschlüsseln/entschlüsseln...<br> |
− | <br> | + | |
| + | <h2>Schlüsselerzeugung für OpenVPN</h2> |
| Als Beispiel wird ein Satz Schlüssel zum Aufsetzen einer OpenVPN-Verbindung erzeugt: | | Als Beispiel wird ein Satz Schlüssel zum Aufsetzen einer OpenVPN-Verbindung erzeugt: |
| <ol> | | <ol> |
Zeile 31: |
Zeile 31: |
| </p> | | </p> |
| Zertifikatsanfrage kann gelöscht werden:<br> | | Zertifikatsanfrage kann gelöscht werden:<br> |
− | <code>$ rm certs/servercsr.pem</code> | + | <code>$ rm Zertifikate/servercsr.pem</code> |
| </li> | | </li> |
| <li> | | <li> |
Zeile 42: |
Zeile 42: |
| </p> | | </p> |
| Zertifikatsanfrage kann gelöscht werden:<br> | | Zertifikatsanfrage kann gelöscht werden:<br> |
− | <code>$ rm certs/klient1csr.pem</code> | + | <code>$ rm Zertifikate/klient1csr.pem</code> |
| </li> | | </li> |
| <li> | | <li> |
Zeile 50: |
Zeile 50: |
| </ol> | | </ol> |
| | | |
− | <h3>Anzeigen von Zertifikaten</h3> | + | <h2>Anzeigen von Zertifikaten</h2> |
− | <code>$ openssl x509 -in certs/klientcert.pem -noout -text</code> | + | |
| + | <h3>Selbsterstelltes Zertifikat anzeigen</h3> |
| + | Ein mit obiger Anleitung erzeugtes Zertifikat kann man sich wie folgt anzeigen lassen:<br> |
| + | <code>$ openssl x509 -in Zertifikate/klient1cert.pem -noout -text</code> |
| + | |
| + | <h3>https-Zertifikat anzeigen</h3> |
| + | Das funktioniert übrigens auch mit TLS-Zertifikaten, die von https genutzt werden. Beispielsweise kann man sich das Zertifikat von [https://www.heise.de/ https://www.heise.de/] wie folgt anzeigen lassen:<br> |
| + | <code>$ openssl s_client -connect www.heise.de:https</code><br> |
| + | Bevor die Verbindung mangels Eingaben wieder abbricht, hohlt man sich den Inhalt von /<br> |
| + | <code>$ GET /</code><br> |
| + | In den angezeigten Informationen verbirgt sich das eigentliche Zertikiat im [http://de.wikipedia.org/wiki/X.509#Dateinamenserweiterungen_f.C3.BCr_Zertifikate PEM]-Format zwischen <i>-----BEGIN CERTIFICATE-----</i> und <i>-----END CERTIFICATE-----</i>. Um es für den Anwender lesbar zu machen makiert und kopiert man diesen Text (inkl. <i>-----BEGIN CERTIFICATE-----</i> und <i>-----END CERTIFICATE-----</i>) und speichert ihn in eine Datei:<br> |
| + | <code>$ echo "<i>hier den in die Zwischenablage kopierten Zertifikatstext einfügen</i>" > heise.pem</code><br> |
| + | Nun lässt man sich das Zertifikiat von <i>openssl</i> in Klartext umwandeln:<br> |
| + | <code>openssl x509 -in heise.pem -noout -text</code> |
Version vom 6. April 2012, 20:52 Uhr
OpenSSL lässt sich für verschiedene Krypto-Operationen nutzen, so z.B. Erstellen und verwalten von verschiedenen Schlüsseltypen, Erstellen von Zertifikaten, verschlüsseln/entschlüsseln...
Schlüsselerzeugung für OpenVPN
Als Beispiel wird ein Satz Schlüssel zum Aufsetzen einer OpenVPN-Verbindung erzeugt:
-
Erzeugen einer CA
Verzeichnis für private Schlüssel und Zertifikate erstellen:
$ mkdir Schluessel
$ mkdir Zertifikate
Zertifikatsnummerierungszähler erstellen und Wert 01 reinschreiben:
$ echo "01" > Zertifikate/vpn-ca.srl
4096bit langer, privater RSA-Schlüssel (PKCS#1 im PEM-Format) [oder Schlüsselpaar???] erstellen, welcher mit AES (256bit) geschützt ist:
$ openssl genrsa -aes256 -out Schluessel/vpn-cakey.pem 4096
10a gültiges (-days 3650
), selbstsigniertes X509-Zertifkat (nur für Test oder root CA)(-x509
) aus privatem Schlüssel erstellen (-key Schluessel/vpn-cakey.pem
) und nach vpn-ca.pem schreiben (-out Zertifikate/vpn-ca.pem
). Zertifikates Seriennummer auf 1 setzen (set_serial 1
) (default 0):
$ openssl req -new -x509 -days 3650 -key Schluessel/vpn-cakey.pem -out Zertifikate/vpn-ca.pem -set_serial 1
Alternativ, die beiden letzten Befehle in einem: Allerdings kann hier nicht AES256 als Verschlüsselung des privaten Schlüssels (jedenfalls ist mir kein entsprechender Parameter bekannt) - stattdessen wird standardmäßig DES3 gewählt:
$ openssl req -x509 -days 3650 -newkey rsa:4096 -keyout Schluessel/vpn-cakey.pem -out Zertifikate/vpn-ca.pem -set_serial 1
-
Erzeugen des server-Schlüssels
4096bit RSA-Serverschlüssel ohne Kennwort (-nodes
) erstellen (-newkey rsa:4096 -keyout Schluessel/serverkey.pem
) & Anfrage für ein 10a gültiges Zertifikat für diesen Schlüssel erstellen (req -out Zertifikate/servercsr.pem -days 3650
):
$ openssl req -out Zertifikate/servercsr.pem -days 3650 -newkey rsa:4096 -keyout Schluessel/serverkey.pem -nodes
10 gültiges X.509 Serverzertifikat aus Zertifikatsanfrage erstellen (x509 -req -in certs/servercsr.pem -out certs/servercert.pem -days 3650
), von der root CA signieren (-CA vpn-ca.pem -CAkey private/vpn-cakey.pem
). Dabei wird vpn-ca.srl automatisch hoch gezählt:
$ openssl x509 -req -in Zertifikate/servercsr.pem -out Zertifikate/servercert.pem -days 3650 -CA Zertifikate/vpn-ca.pem -CAkey Schluessel/vpn-cakey.pem
Zertifikatsanfrage kann gelöscht werden:
$ rm Zertifikate/servercsr.pem
-
Erzeugen eines Klienten-Schlüssels
Klienten-Schlüssel erstellen & Zertifikatsanfrage für Klienten-Schlüssel:
$ openssl req -out Zertifikate/klient1csr.pem -days 3650 -newkey rsa:4096 -keyout Schluessel/klient1key.pem -nodes
Clientzertifikat aus Zertifikatsanfrage erstellen:
$ openssl x509 -req -in Zertifikate/klient1csr.pem -out Zertifikate/klient1cert.pem -days 3650 -CA Zertifikate/vpn-ca.pem -CAkey Schluessel/vpn-cakey.pem
Zertifikatsanfrage kann gelöscht werden:
$ rm Zertifikate/klient1csr.pem
-
Zufallszahlen "Diffie-Hellman Parameter" erzeugen
$ openssl dhparam -out dh1024.pem 1024
Anzeigen von Zertifikaten
Selbsterstelltes Zertifikat anzeigen
Ein mit obiger Anleitung erzeugtes Zertifikat kann man sich wie folgt anzeigen lassen:
$ openssl x509 -in Zertifikate/klient1cert.pem -noout -text
https-Zertifikat anzeigen
Das funktioniert übrigens auch mit TLS-Zertifikaten, die von https genutzt werden. Beispielsweise kann man sich das Zertifikat von https://www.heise.de/ wie folgt anzeigen lassen:
$ openssl s_client -connect www.heise.de:https
Bevor die Verbindung mangels Eingaben wieder abbricht, hohlt man sich den Inhalt von /
$ GET /
In den angezeigten Informationen verbirgt sich das eigentliche Zertikiat im PEM-Format zwischen -----BEGIN CERTIFICATE----- und -----END CERTIFICATE-----. Um es für den Anwender lesbar zu machen makiert und kopiert man diesen Text (inkl. -----BEGIN CERTIFICATE----- und -----END CERTIFICATE-----) und speichert ihn in eine Datei:
$ echo "hier den in die Zwischenablage kopierten Zertifikatstext einfügen" > heise.pem
Nun lässt man sich das Zertifikiat von openssl in Klartext umwandeln:
openssl x509 -in heise.pem -noout -text