Da die großen und bekannten Zertifizierungsstellen (CA) meist alle in Amerika sitzen, möchte ich einfach mal zeigen, wie man relativ schnell seine eigene Zertifizierungsstelle erstellen kann und wie man dann ein Zertifikat erstellt und signiert.
Grundlegendes:
- OpenSSL installieren:
apt-get install openssl
- Verzeichnis für das CA erstellen und reinwechseln
mkdir /root/cacd /root/ca
- Benötigte Ordner für das CA erstellen:
mkdir -p demoCAmkdir -p demoCA/certsmkdir -p demoCA/crlmkdir -p demoCA/newcertsmkdir -p demoCA/privatetouch demoCA/index.txtecho 01 > demoCA/serial
- Damit beim Signieren keine Fehler auftauchen (da wir gleich nicht umbedingt alles ausfüllen möchten), muss in der „/usr/lib/ssl/openssl.cnf“ Datei was angepasst werden:
# For the CA policy [ policy_match ] countryName = match stateOrProvinceName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional
supplied = muss ausgefüllt sein, optional = muss nicht 😉
Certificate Authority/Zertifizierungsstelle generieren:
- Ich nehme hier 3650 Tage – also 10 Jahre. Wenn die 10 Jahre abgelaufen sind, werden auch somit alle signierten Zertifikate ungülig!
openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout cakey.pem -out cacert.pem
Beispiel (der . bedeutet das dort nichts erscheint):
Country Name (2 letter code) [AU]:DE State or Province Name (full name)[Some-State]:NRW Locality Name (eg, city) []:Bielefeld Organization Name (eg, company) [Internet Widgits Pty Ltd]:. Organizational Unit Name (eg, section) []:. Common Name (eg, YOUR name) []:Maffert CA Email Address []:tobi@domain.det
Das eigentliche Zertifikat für den E-Mail Server (postfix) oder Webserver (apache2) erstellen (hier für Postfix):
- Certificate Signing Request (CSR) erzeugen (auch wieder 10 Jahre, mach ich immer so 😉 )
openssl req -new -nodes -newkey rsa:1024 -keyout maffert-key.pem -out maffert-csr.pem -days 3650
Beispiel:
Country Name (2 letter code) [AU]:DE State or Province Name (full name) [Some-State]:NRW Locality Name (eg, city) []:Bielefeld Organization Name (eg, company) [Internet Widgits Pty Ltd]:. Organizational Unit Name (eg, section) []:. Common Name (eg, YOUR name) []:mail.maffert.net Email Address []:tobi@domain.de
- Nun das CSR signieren:
openssl ca -in maffert-csr.pem -cert cacert.pem -keyfile cakey.pem -days 3650 -out maffert-cert.pem
- So nun wärs das schon, jetzt kann man noch testen ob das Zertifikat in Verbindung mit dem CA Gültig ist:
openssl verify -CAfile cacert.pem -verbose maffert-cert.pem
Umwandeln/konvertieren:
Das CA Zertifikat liegt im .pem Format vor. Microsoft möchte gerne ein anderen Format, also falls nötig kann man das mit folgendem Befehl umwandeln:
openssl x509 -in cacert.pem -outform der -out cacert.crt
oder
openssl x509 -outform der -in cacert.pem -out cacert.der
Wenn man das .p7b Format benötigt, dann:
openssl crl2pkcs7 -nocrl -certfile cacert.cer -out cacert.p7b -certfile cacert.cer
Stammzertifikate importieren:
Bei Windows:
- Start > Ausführen > certmgr.msc eingeben und Enter
- dort dann Rechte Maustaste auf „Vertrauenswürdige Stammzertifiezierungsstellen“ > Alle aufgaben > importieren ..
Bei Debian:
- Das Zertifikat (sollte .csr sein) nach „/usr/share/ca-certificates“ kopieren
- „dpkg-reconfigure ca-certificates“ ausführen, die erste Frage mit „JA“ bestätigen und dann dort das CA/die Zertifizierungsstelle auswählen und auf „OK“. Fertig
Viel spaß, hoffe ich konnte helfen