Zertifizierungsstelle

Dieses Kapitel beschreibt, wie man mit OpenSSL eine Zertifizierungsstelle betreiben und Zertifikate für Websserver und Mailserver ausstellt und wie man seine Daten auf der Festplatte verschlüsselt.

Konfiguration

Idealerweise richtet man die Zertifizierungsstelle auf einem gesicherten Rechner ein und verwaltet dort auch die benötigten Schlüssel und Zertifikate. OpenSSL wird über die Konfigurationsdatei /etc/ssl/openssl.cnf gesteuert.

# /etc/ssl/openssl.cnf

[ CA_default ]
dir              = /etc/ssl          # Where everything is kept
certs            = $dir              # Where the issued certs are kept
crl_dir          = $dir              # Where the issued crl are kept
new_certs_dir    = $dir              # default place for new certs.
certificate      = $dir/example-ca.crt  # The CA certificate
private_key      = $dir/example-ca.key  # The private key
RANDFILE         = $dir/.rand        # private random number file
database         = $dir/index.txt    # database index file.
serial           = $dir/serial       # The current serial number
crlnumber        = $dir/crlnumber    # the current crl number
crl              = $dir/crl.pem      # The current CRL

x509_extensions  = usr_cert          # The extentions to add to the cert
default_days     = 365               # how long to certify for
default_crl_days = 30                # how long before next CRL
default_md       = sha1              # which md to use.
preserve         = no                # keep passed DN ordering
unique_subject   = yes               # Set to 'no' to allow creation of several ctificates with same subject.

Zunächst erstellen wir das Wurzelzertifikat, hier mit einer Gültigkeitsdauer von 10 Jahren. Die Option nodes sorgt dafür, dass der private Schlüssel nicht mit einem Passwort geschützt wird.

openssl req -nodes -new -x509 -days 3650 -keyout example-ca.key -out example-ca.crt

Das Wurzelzertifikat, keinesfalls jedoch den privaten Schlüssel, kann man öffentlich zugänglich machen.

Zertifikate ausstellen

Für Clientzertifikate muss man erst ein RSA-Schlüsselpaar erzeugen. Wer die Kontrolle über seinen privaten Schlüssel behalten will, sollte diesen Schritt unbedingt clientseitig durchführen. Der öffentliche Schlüssel wird in eine Zertifikatsanfrage (CSR) verpackt.

openssl req -nodes -new -keyout client.key -out client.csr

Die Zertifizierungsstelle muss nun die Zertifikatsanfrage mit ihrem privaten Schlüssel unterschreiben, um das Clientzertifikat auszustellen.

openssl ca -in client.csr -out client.crt

Zertifikate widerrufen

FIXME: Widerrufsliste verwalten

Referenzen

  1. John Viega et al: Network Security with OpenSSL, O'Reilly 2002
  2. Bill Bryant: Designing an Authentication System: a Dialogue in Four Scenes