Mac nix basteln:OpenSSL: Difference between revisions
No edit summary |
No edit summary |
||
| Line 6: | Line 6: | ||
<li> | <li> | ||
<h4>Erzeugen einer CA</h4> | <h4>Erzeugen einer CA</h4> | ||
Verzeichnis für private Schlüssel und Zertifikate erstellen:<br> | |||
<code> | |||
$ mkdir Schluessel<br> | |||
$ mkdir Zertifikate<br> | |||
</code> | |||
Zertifikatsnummerierungszähler erstellen und Wert 01 reinschreiben:<br> | Zertifikatsnummerierungszähler erstellen und Wert 01 reinschreiben:<br> | ||
<code>$ echo "01" > vpn-ca.srl | <code>$ echo "01" > Zertifikate/vpn-ca.srl</code><br> | ||
4096bit langer, privater RSA-Schlüssel (PKCS#1 im PEM-Format) [oder Schlüsselpaar???] erstellen, welcher mit AES (256bit) geschützt ist:<br> | 4096bit langer, privater RSA-Schlüssel (PKCS#1 im PEM-Format) [oder Schlüsselpaar???] erstellen, welcher mit AES (256bit) geschützt ist:<br> | ||
<code>$ openssl genrsa -aes256 -out | <code>$ openssl genrsa -aes256 -out Schluessel/vpn-cakey.pem 4096</code><br> | ||
10a gültiges (<code>-days 3650</code>), selbstsigniertes X509-Zertifkat (nur für Test oder root CA)(<code>-x509</code>) aus privatem Schlüssel erstellen (<code>-key | 10a gültiges (<code>-days 3650</code>), selbstsigniertes X509-Zertifkat (nur für Test oder root CA)(<code>-x509</code>) aus privatem Schlüssel erstellen (<code>-key Schluessel/vpn-cakey.pem</code>) und nach vpn-ca.pem schreiben (<code>-out Zertifikate/vpn-ca.pem</code>). Zertifikates Seriennummer auf 1 setzen (<code>set_serial 1</code>) (default 0):<br> | ||
<code>$ openssl req -new -x509 -days 3650 -key | <code>$ openssl req -new -x509 -days 3650 -key Schluessel/vpn-cakey.pem -out Zertifikate/vpn-ca.pem -set_serial 1</code> | ||
<p> | <p> | ||
<i>'''Alternativ'''</i>, 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:<br> | <i>'''Alternativ'''</i>, 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:<br> | ||
<code>$ openssl req -x509 -days 3650 -newkey rsa:4096 -keyout | <code>$ openssl req -x509 -days 3650 -newkey rsa:4096 -keyout Schluessel/vpn-cakey.pem -out Zertifikate/vpn-ca.pem -set_serial 1</code> | ||
</p> | </p> | ||
</li> | </li> | ||
<li> | <li> | ||
<h4>Erzeugen des server-Schlüssels</h4> | <h4>Erzeugen des server-Schlüssels</h4> | ||
4096bit RSA-Serverschlüssel ohne Kennwort (<code>-nodes</code>) erstellen (<code>-newkey rsa:4096 -keyout | 4096bit RSA-Serverschlüssel ohne Kennwort (<code>-nodes</code>) erstellen (<code>-newkey rsa:4096 -keyout Schluessel/serverkey.pem</code>) & Anfrage für ein 10a gültiges Zertifikat für diesen Schlüssel erstellen (<code>req -out Zertifikate/servercsr.pem -days 3650</code>):<br> | ||
<code>$ openssl req -out | <code>$ openssl req -out Zertifikate/servercsr.pem -days 3650 -newkey rsa:4096 -keyout Schluessel/serverkey.pem -nodes</code> | ||
<p> | <p> | ||
10 gültiges X.509 Serverzertifikat aus Zertifikatsanfrage erstellen (<code>x509 -req -in certs/servercsr.pem -out certs/servercert.pem -days 3650</code>), von der root CA signieren (<code>-CA vpn-ca.pem -CAkey private/vpn-cakey.pem</code>). Dabei wird ''vpn-ca.srl'' automatisch hoch gezählt:<br> | 10 gültiges X.509 Serverzertifikat aus Zertifikatsanfrage erstellen (<code>x509 -req -in certs/servercsr.pem -out certs/servercert.pem -days 3650</code>), von der root CA signieren (<code>-CA vpn-ca.pem -CAkey private/vpn-cakey.pem</code>). Dabei wird ''vpn-ca.srl'' automatisch hoch gezählt:<br> | ||
<code>$ openssl x509 -req -in | <code>$ openssl x509 -req -in Zertifikate/servercsr.pem -out Zertifikate/servercert.pem -days 3650 -CA Zertifikate/vpn-ca.pem -CAkey Schluessel/vpn-cakey.pem</code> | ||
</p> | </p> | ||
Zertifikatsanfrage kann gelöscht werden:<br> | Zertifikatsanfrage kann gelöscht werden:<br> | ||
| Line 33: | Line 36: | ||
<h4>Erzeugen eines Klienten-Schlüssels</h4> | <h4>Erzeugen eines Klienten-Schlüssels</h4> | ||
Klienten-Schlüssel erstellen & Zertifikatsanfrage für Klienten-Schlüssel:<br> | Klienten-Schlüssel erstellen & Zertifikatsanfrage für Klienten-Schlüssel:<br> | ||
<code>$ openssl req -out | <code>$ openssl req -out Zertifikate/klient1csr.pem -days 3650 -newkey rsa:4096 -keyout Schluessel/klient1key.pem -nodes</code> | ||
<p> | <p> | ||
Clientzertifikat aus Zertifikatsanfrage erstellen:<br> | Clientzertifikat aus Zertifikatsanfrage erstellen:<br> | ||
<code>$ openssl x509 -req -in | <code>$ openssl x509 -req -in Zertifikate/klient1csr.pem -out Zertifikate/klient1cert.pem -days 3650 -CA Zertifikate/vpn-ca.pem -CAkey Schluessel/vpn-cakey.pem</code> | ||
</p> | </p> | ||
Zertifikatsanfrage kann gelöscht werden:<br> | Zertifikatsanfrage kann gelöscht werden:<br> | ||
Revision as of 13:18, 6 April 2012
OpenSSL
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...
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 SchluesselZertifikatsnummerierungszähler erstellen und Wert 01 reinschreiben:
$ mkdir Zertifikate
$ 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 1Alternativ, 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 -nodes10 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.pemZertifikatsanfrage kann gelöscht werden:
$ rm certs/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 -nodesClientzertifikat 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.pemZertifikatsanfrage kann gelöscht werden:
$ rm certs/klient1csr.pem -
Zufallszahlen "Diffie-Hellman Parameter" erzeugen
$ openssl dhparam -out dh1024.pem 1024
Anzeigen von Zertifikaten
$ openssl x509 -in certs/klientcert.pem -noout -text