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.
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.
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
FIXME: Widerrufsliste verwalten
Designing an Authentication System: a Dialogue in Four Scenes