Kategori Linux

Eine eigene x509v3 CA erstellen

Samstag, April 28th, 2012

Zunächst wird eine Config Datei benötigt.
ca.conf:
[ req ]
default_bits=4096
default_md=sha512
utf8=yes
distinguished_name=req_distinguished_name
x509_extensions=x509_exts

[ req_distinguished_name ]

[ x509_exts ]
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer:always
basicConstraints = CA:true

[ ca ]
default_ca=default_ca

[ default_ca ]
certificate=ca.crt
private_key=private/ca.key
default_days=36500
default_md=sha512
database=meta/db.txt
unique_subject=no
serial=meta/serial
policy=ca_policy
name_opt=ca_default
cert_opt=ca_default
copy_extensions=copyall
x509_extensions=ca_x509_ext

[ ca_x509_ext ]
# an empty referenced section ensures a v3 cert is generated

[ server ]
nsCertType=server

[ ca_policy ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = optional
emailAddress = optional

Dann werden noch ein paar Ordner, eine lehre Datenbank(halde) und eine Seriennummer benötigt.
mkdir private meta certs
touch meta/db.txt
echo 01 > meta/serial

Nun wird die CA erstellt.
openssl req -x509 -subj /CN=TestCA -newkey rsa:4096 -keyout private/ca.key -out ca.crt -nodes -config ca.conf -days 36500

Dann muss das CSR (Certifikate signing request) erstellt werden.
openssl req -subj /CN=TestCert -newkey rsa:4096 -keyout new.key -out new.csr -nodes -config ca.conf -days 36500

Zum Schluss wird aus dem CSR das von der CA signierte Zertifikat des Clients.
openssl ca -in new.csr -outdir certs/ -config ca.conf -notext -utf8

Möchten man nun z.b. ein vpn Server mit der CA betreiben braucht man noch ein Server Zertifikat.
openssl ca -in new.csr -outdir certs/ -config ca.conf -extensions server -notext -utf8
(z.B. openvpn server wenn man die –ns-cert-type server bei den clients angibt)

Die Zertifikate kann man sich dann mit folgenden Befehl anzeigen lassen.
openssl x509 -in ca.crt -noout -text

Quelle: www.openssl.org

[update 17.02.2014]
Der Hash Algorithmus wurde von sha1 auf sha512 geändert, da dieser als Angreifbar gilt.

Ubuntu 12.04 Precise Pangolin

Mittwoch, April 25th, 2012

Es ist so weit, Precise Pangolin Ubuntu 12.04 ist auf unserem Mirror angekommen.

http://mirror.bauhuette.fh-aachen.de/ubuntu-cd/

openvpn up/down script-security unter 12.04 precise

Dienstag, April 10th, 2012

Ach, toll. Nach der Umstellung von Lucid auf Ubuntu 12.04 Precise konnte OpenVPN nicht mehr starten. Im opnvpn.log fand ich folgenden Warnung die das Problem beschreibt.
WARNING: External program may not be called unless '--script-security 2' or higher is enabled. Use '--script-security 3 system' for backward compatibility with 2.1_rc8 and earlier. See --help text or man page for detailed info.
WARNING: Failed running command (--up/--down): external program fork failed

Das Problem, in meiner client.conf stand ein Script das ausgeführt wird wenn der Tunnel Startet.
up /etc/openvpn/ip-config

Wenn man folgende Ziele in der client.conf ergähnst, wird dem OpenVPN erlaub dies auszuführen.
script-security 3 system

zone files eine IP ändern

Freitag, April 6th, 2012

Mal eben schnell in allen Zonefiles eine IP ändern und die serial Nummer updaten.

#!/bin/bash
for item in *; do 
  if [ -f $item ]; then 
    sed 's/'88.198.44.248'/'46.4.34.52'/g' $item > $item.tmp;
    if [ "$(md5sum $item | awk '{print $1}')" = "$(md5sum $item.tmp | awk '{print $1}')" ]; then 
      rm $item.tmp
    else
      sed "s/$(cat $item.tmp | grep 'serial' | awk '{print $1}')/2012040601/g" $item.tmp > $item
      rm $item.tmp
    fi   
  fi 
done

Das funktioniert natürlich nur solange wenn die Zonefiles noch nicht geupdatet wurden und die Serienummern mit ;sirial getakt sind.

Cannot register the hard disk because a hard disk already exists

Donnerstag, März 15th, 2012

Heute haben wir während einer Installation eine vdi Datei Coppiert. Lieder haben wir nicht daran gedacht das die VDI Dateien feste UUIDs zugeordnet sind. Das fürte bei einbinden der Platte zu folgenden Fehler:

VBoxManage: error: Cannot register the hard disk 'precise.vdi' {bbc079a9-ca5d-406d-a43f-435c995822e8} because a hard disk 'lucid.vdi' with UUID {bbc079a9-ca5d-406d-a43f-435c995822e8} already exists
VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component VirtualBox, interface IVirtualBox, callee nsISupports
Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, AccessMode_ReadWrite, fForceNewUuidOnOpen, pMedium.asOutParam())" at line 210 of file VBoxManageDisk.cpp

Abhilfe schafft folgender befehl:
VBoxManage internalcommands sethduuid precise.vdi
UUID changed to: 5a3ecc9a-ea07-4d6f-9ff9-3437702df22b

Quelle: grahamrhay.wordpress.com