Eine kleine Anleitung zum Aufbau einer CA Infrastruktur. Damit haben Sie das nötige Handwerkszeug, um z.B. ein eigenes, auf X.509 Zertifikaten basierendes VPN aufzubauen.
X.509 Zertifikate In diesem Artikel wird nur auf X.509 Zertifikate im Zusammenhang mit IPsec eingegangen. Der grundsätzliche Vorteil von X.509 liegt darin, dass das IPsec VPN Gateway nur das CA Zertifikat und ein lokales Zertifikat benötigt, das von der CA signiert ist. Das Gateway kann dann so konfiguriert werden, dass es IPsec Verbindungen von allen Clients zulässt, die ein von dieser CA signiertes Zertifikat haben. Benötigte Software: Zertifikatskette erstellenZunächst brauchen wir für unsere CA einen Key, der mit einer Passphrase verschlüsselt wird. Dieser Key wird immer gebraucht, wenn ein neues Zertifikat zu signieren ist, oder ein Zertifikat widerrufen wird. $ openssl genrsa -des3 -out ca.key 4096 Generating RSA private key, 4096 bit long modulus ...............++ ................................................++ e is 65537 (0x10001) Enter pass phrase for ca.key: Verifying - Enter pass phrase for ca.key: $
Nun wird das CA Zertifikat generiert: $ openssl req -new -x509 -days 7500 -key ca.key -out ca.crt Enter pass phrase for ca.key: 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]:de State or Province Name (full name) [Some-State]:Hessen Locality Name (eg, city) []:Taunusstein Organization Name (eg, company) [Internet Widgits Pty Ltd]:taunusstein.net WLAN Organizational Unit Name (eg, section) []:Certification Authority Common Name (eg, YOUR name) []:Freifunk.Net Email Address []:
Diese E-Mail-Adresse ist gegen Spambots geschützt! Sie müssen JavaScript aktivieren, damit Sie sie sehen können.
$
Die CA soll längerfristig verwendet werden, daher die Gültigkeit von 7500 Tagen. Ist das CA Zertifikat verfallen, dann ist die gesamte WLAN Infrastruktur nicht mehr mit IPsec betriebsfähig. Mit $ openssl x509 -in ca.crt -noout -subject subject= /C=de/ST=Hessen/L=Taunusstein/O=taunusstein.net WLAN/\ OU=Certification Authority/CN=Freifunk.Net/eailAddress=
Diese E-Mail-Adresse ist gegen Spambots geschützt! Sie müssen JavaScript aktivieren, damit Sie sie sehen können.
$
können wir uns ansehen, um was es bei dem CA Zertifikat geht. Statt -subject kann man auch -text angeben, dann werden noch weitere Daten angezeigt: $ openssl x509 -in ca.crt -noout -text Certificate: Data: Version: 3 (0x2) Serial Number: af:3c:28:99:92:f9:87:28 Signature Algorithm: md5WithRSAEncryption Issuer: C=de, ST=Hessen, L=Taunusstein, O=taunusstein.net WLAN, ... Validity Not Before: Dec 14 07:56:19 2004 GMT Not After : Jun 27 07:56:19 2025 GMT ... (noch sehr viel Text)
Nun generieren wir für ein fiktives WiFi Netz in München einen Key und einen "Certificate Signing Request": $ openssl req -subj "/C=de/ST=Hessen/L=Muenchen/O=taunusstein.net WLAN\ /OU=Muenchner WLAN/CN=example.com/emailAddress=
Diese E-Mail-Adresse ist gegen Spambots geschützt! Sie müssen JavaScript aktivieren, damit Sie sie sehen können.
" \ -newkey rsa:1024 -keyout muenchen-key.pem -out muenchen-csr.pem \ -passin pass:geheim -passout pass:geheim Generating a 1024 bit RSA private key ..............++++++ ...................++++++ writing new private key to 'muenchen-key.pem' ----- $
Das o.g. Passwort sollte im realen Fall anders gewählt werden. ST gibt den Standort der CA an, wir wissen ja alle, dass München nicht in Hessen liegt ;-) $ openssl ca -batch -keyfile ca.key -cert ca.crt -in muenchen-csr.pem \ -days 735 -out muenchen-crt.pem -notext Using configuration from /usr/lib/ssl/openssl.cnf Enter pass phrase for ca.key: Check that the request matches the signature Signature ok Certificate Details: Serial Number: 0 (0x0) Validity Not Before: Dec 14 08:12:35 2004 GMT Not After : Dec 19 08:12:35 2006 GMT Subject: countryName = de stateOrProvinceName = Hessen organizationName = taunusstein.net WLAN organizationalUnitName = Muenchner WLAN commonName = Freifunk.Net emailAddress =
Diese E-Mail-Adresse ist gegen Spambots geschützt! Sie müssen JavaScript aktivieren, damit Sie sie sehen können.
X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: 8F:5C:90:77:C4:B6:0E:31:D2:7E:BF:34:A3:08:D9:78:B6:B2:5C:73 X509v3 Authority Key Identifier: keyid:72:A3:10:15:69:A0:77:05:AD:47:A9:F7:1B:F1:D2:7C:8A:06:F3:ED DirName:/C=de/ST=Hessen/L=Taunusstein/O=taunusstein.net ... serial:AF:3C:28:99:92:F9:87:28
Certificate is to be certified until Dec 19 08:12:35 2006 GMT (735 days)
Write out database with 1 new entries Data Base Updated $
Für den Client sind nun die Dateien muenchen-key.pem und muenchen-crt.pem wichtig. Diese können unter OpenSwan gleich in die entsprechenden Verzeichnisse kopiert werden. Unter Windows benötigen wir noch ein pkcs12 Chain. Dazu packen wir alle muenchen... Dateien in eine Datei: $ cat muenchen-* >> tmp $
Nun machen wir das pkcs12 File: $ openssl pkcs12 -export -in tmp -out muenchen.p12 -passin pass:geheim \ -passout pass:geheim $
Unter Windows kann man dann muenchen.p12 mit dem mmc Modul "Zertifikate" in die Zertifikatskette für "lokalen Computer" importieren. Hier wird zunächst das Passwort, das bei openssl pkcs12 ... benutzt wurde, verwendet. Der private Schlüssel aus openssl req ... wird nicht noch einmal zusätzlich verschlüsselt.
|