Tutorials - OpenSSL Tutorial
Sprachenübersicht/Betriebssysteme/Linux/Security
OpenSSL Tutorial
Diese Seite wurde 180546 mal aufgerufen.
Dieser Artikel wurde in einem Wikiweb System geschrieben, das heißt, Sie können die Artikel jederzeit editieren, wenn Sie einen Fehler gefunden haben, oder etwas hinzufügen wollen.
Editieren Versionen Linkpartnerschaft Bottom Printversion
Keywords: OpenSSL, installieren, Zertifikat, public, private
Inhaltsverzeichnis
OpenSSL ist eine Open-Source-Version des SSL/TLS-Protokolls, und hat
die Aufgabe, sichere, verschlüsselte Verbindungen aufzubauen.
SSL wird vor allem bei HTTP, aber auch bei Applikationen wie z.B. SSH und OpenVPN eingesetzt. In diesem Tutorial lernen wir, wie wir OpenSSL
benutzen und Zertifikate erstellen.
- Debian
Unter Debian kann man OpenSSL mit apt-get install openssl installieren lassen.
- RedHat RPM
Wenn das Packetverwaltungssystem RPM installiert ist, müssen Sie nur
das rpm Packet (google: openssl .rpm "index of") herunterladen, und
es ausführen.
- Source Code
Die Source Codes können wir unter
www.openssl.org/source/ herunterladen, in meinem
Fall ist es die Datei www.openssl.org/source/openssl-0.9.8.tar.gz und
www.openssl.org/source/openssl-0.9.8.tar.gz.md5.
Nachdem wir die Datei heruntergeladen haben verschieben wir sie in
das Verzeichnis /usr/src, und prüfen den md5 Wert:
vsn-server:/usr/src# md5sum openssl-0.9.8.tar.gz && cat
openssl-0.9.8.tar.gz.md5
9da21071596a124acde6080552deac16 openssl-0.9.8.tar.gz
9da21071596a124acde6080552deac16
Die beiden Werte passen überein, also passt das ganze.
Jetzt können wir die Datei entpacken und installieren:
vsn-server:/usr/src# tar -xzvf openssl-0.9.8.tar.gz
vsn-server:/usr/src# cd openssl-0.9.8
vsn-server:/usr/src# ./configure
vsn-server:/usr/src# make
vsn-server:/usr/src# make test
vsn-server:/usr/src# make install
Jetzt sollte OpenSSL installiert sein.
Als Beispiel erstellen wir hier ein Zertifikat für die Benutzung von
OpenVPN. Für andere Optionen siehe man openssl.
Wichtig:
Wichtig ist, das man keine doppelten common names benutzt, das kann
später Fehler verursachen.
Als erstes erstellen wir ein Schlüsselpaar für unsere Certificate Authority (CA). Dazu erstellen wir zuerst einen
Schlüssel(vpn-cakey.pem) und danach das Zertifikat(vpn-ca.pem). Der Schlüssel hat in diesem Beispiel
2048 Bit, je nach Anspruch kann er natürlich stärker oder schwächer
gewählt werden. Die Dateiendung .pem steht für ein Base64 kodiertes
X.509 (ein Public- Key-Infrastruktur Protokoll) Zertifikat.
#entweder openssl oder ssl
vsn-server:/usr/src# cd /usr/local/ssl
# Anm.: Bei Debian 3.1 befindet sich openssl unter /usr/lib/ssl
# Bei Fedora unter /usr/share/ssl
vsn-server:/usr/local/ssl# openssl genrsa -aes256 -out private/vpn-cakey.pem 2048
Generating RSA private key, 2048 bit long modulus
................................+++
...............+++
e is 65537 (0x10001)
Enter pass phrase for private/vpn-cakey.pem:
Verifying - Enter pass phrase for private/vpn-cakey.pem:
vsn-server:/usr/local/ssl# openssl req -new -x509 -days 3650 -key
private/vpn-cakey.pem -out vpn-ca.pem -set_serial 1
Enter pass phrase for private/vpn-cakey.pem:
You are about to be asked to enter information that will be
incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or
a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:Vorarlberg
Locality Name (eg, city) []:Dornbirn
Organization Name (eg, company) [Internet Widgits Pty
Ltd]:Online-tutorials.net
Organizational Unit Name (eg, section) []:vsn
Common Name (eg, YOUR name) []:VPN
#Zugriffsrechte entziehen
vsn-server:/usr/local/ssl# chmod 0700 private
Jetzt erstellen wir die Zertifikate für die Clients, dazu müssen wir
zuerst ein paar Vorbereitungen treffen:
Wir erstellen ein Inhaltsverzeichnis für die Zertifikate und
numerieren Sie durch. Damit keine doppelten Zertifikate vergeben
werden erstellen wir eine CRL (certificate revocation list,
Zertifikatsperrliste).
vsn-server:/usr/local/ssl# touch index.txt && echo "01" > serial
Jetzt erstellen wir eine Zertifikatsanfrage für den Schlüssel vom
Server:
Achtung:
Die Option "Common Name (eg, YOUR name) []:<server>" wird später von OpenVPN in der Option "tls-remote
<server> verwendet."
vsn-server:/usr/local/ssl# openssl req -new -newkey rsa:1024 -out
certs/servercsr.pem -nodes -keyout private/serverkey.pem -days
3650
Generating a 1024 bit RSA private key
...........++++++
........++++++
writing new private key to 'private/serverkey.pem'
-----
You are about to be asked to enter information that will be
incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or
a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:Vorarlberg
Locality Name (eg, city) []:Dornbirn
Organization Name (eg, company) [Internet Widgits Pty
Ltd]:Online-tutorials.net
Organizational Unit Name (eg, section) []:vsn
Common Name (eg, YOUR name) []:server
Email Address []:simon_hecht@online-tutorials.net
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Jetzt können wir Server-Zertifikat erstellen:
vsn-server:/usr/local/ssl# openssl x509 -req -in
certs/servercsr.pem -out certs/servercert.pem -CA vpn-ca.pem -CAkey
private/vpn-cakey.pem -CAserial /usr/local/ssl/serial -days 3650
Signature ok
subject=/C=AU/ST=Vorarlberg/L=Dornbirn/O=Online-tutorials.net/CN=Simon
Hecht/emailAddress=simon_hecht@online-tutorials.net
Getting CA Private Key
Enter pass phrase for private/vpn-cakey.pem:
Das CSR brauchen wir nicht mehr:
Code:
rm certs/servercsr.pem
Wir können jetzt die Paare für die einzelnen Clients erstellen, dazu
erstellen wir wieder ein CSR, und danach das Zertifikat
vsn-server:/usr/local/ssl# openssl req -new -newkey rsa:1024 -out
certs/simon_lan_csr.pem -nodes -keyout private/simon_lan_key.pem
-days 3650
Generating a 1024 bit RSA private key
.....++++++
.......................++++++
writing new private key to 'private/simon_lan_key.pem'
-----
You are about to be asked to enter information that will be
incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or
a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:Vorarlberg
Locality Name (eg, city) []:Dornbirn
Organization Name (eg, company) [Internet Widgits Pty
Ltd]:Online-tutorials.net
Organizational Unit Name (eg, section) []:HomeLan
Common Name (eg, YOUR name) []:Home
Email Address []:simon_hecht@hotmail.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
vsn-server:/usr/local/ssl# openssl x509 -req -in certs/simon_lan_csr.pem -out certs/simon_lan_cert.pem -CA vpn-ca.pem
-CAkey private/vpn-cakey.pem -CAserial /usr/local/ssl/serial -days 3650
Signature ok
subject=/C=AU/ST=Vorarlberg/L=Dornbirn/O=Online-tutorials.net/CN=Simon
Hecht/emailAddress=blub[at]blubb.com
Getting CA Private Key
Enter pass phrase for private/vpn-cakey.pem:
vsn-server:/usr/local/ssl# rm certs/simon_lan_csr.pem
Wenn man auf der Clientenseite den Schlüssel mit einer Kennwortabfrage
absichern will, wird im ersten Aufruf der Parameter -nodes
weggelassen.
Am Schluss brauchen wir noch ein Diffie-Hellmann Parameter:
vsn-server:/usr/local/ssl# openssl dhparam -out dh1024.pem
1024
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
..+...+...........+......+..[abgekürzt]............+....++*++*++*
Jetzt sollten die Zertifikate bereit sein.
Hier finden sie anschließend ein OpenVPN
Tutorial, das zeigt, wie man ein VPN mit OpenVPN einrichtet.
Um die Informationen über das Zertifikat als Text auszugeben können
Sie den Befehl openssl x509 -in <cert> -text benutzen. Um mehr
Details herauszufinden können Sie openssl asn1parse -i -in <cert>
-dump anwenden.
Die folgenden Scripts erzeugen den Ordner certs/ und erstellen die
jeweiligen Scripts in dem Verzeichnis. Sie müssen zuerst mit chmod a+x
ausführbar gemacht werden.
Erstellen des VPN Certs und des CA Certs:
#!/bin/bash
mkdir certs
cd certs
echo "CA Cert erstellen..."
openssl genrsa -aes256 -out ca_key_vpn.pem 2048
openssl req -new -x509 -days 3650 -key ca_key_vpn.pem -out ca_cert_vpn.pem -set_serial 1
chmod 700 ../certs
touch serial
echo "01" > serial
echo ""
echo "Server Cert erstellen..."
echo "Wichtig: Common Name einzigartig halten und merken - wird sp�eter im VPN Script gebraucht"
echo ""
openssl req -new -newkey rsa:2048 -out server_csr_vpn.pem -nodes -keyout server_key_vpn.pem -days 3650
openssl x509 -req -in server_csr_vpn.pem -out server_cert_vpn.pem -CA ca_cert_vpn.pem -CAkey ca_key_vpn.pem -CAserial serial -days 3650
rm server_csr_vpn.pem
echo ""
echo "Zufallszahlen erstellen..."
openssl dhparam -out dh2048.pem 2048
echo ""
echo "Client Certs mit folgendem Commando vorbereiten:"
echo "./clientcerts <clientname>"
Erstellen der Clientcerts: createclients
Benutzung: ./createclients <clientname>
#!/bin/bash
cd certs
echo "Client Cert vorbereiten..."
openssl req -new -newkey rsa:2048 -out $1_csr_vpn.pem -nodes -keyout $1_key_vpn.pem -days 3650
echo ""
echo "Client Certs erstellen..."
openssl x509 -req -in $1_csr_vpn.pem -out $1_cert_vpn.pem -CA ca_cert_vpn.pem -CAkey ca_key_vpn.pem -CAserial serial -days 3650
echo ""
echo "CSR Cert loeschen..."
rm $1_csr_vpn.pem
echo "Clientcert $1_cert_vpn.pem und Clientkey $1_key_vpn.pem erstellt..."
cd ..
Gibt es noch irgendwelche Fragen, oder wollen Sie über den Artikel diskutieren?
Editieren Versionen Linkpartnerschaft Top Printversion
Haben Sie einen Fehler gefunden? Dann klicken Sie doch auf Editieren, und beheben den Fehler, keine Angst, Sie können nichts zerstören, das Tutorial kann wiederhergestellt werden
Sprachenübersicht/Betriebssysteme/Linux/Security/OpenSSL Tutorial