Mac nix basteln:OpenSSL

Aus Attraktor Wiki

Wechseln zu: Navigation, Suche

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:

  1. 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

  2. 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

  3. 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

  4. 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