OpenSSL CA

Mit OpenSSL ein Root Zertifikat erzeugen und damit ein Server Zertifikat signieren. (Micro-CA)

Root- Zertifikat

Erzeugen von Root- Zertifikat und Schlüssel, dabei wird das Passwort abgefragt mit dem der Schlüssel geschützt wird.

openssl req \
    -new \
    -x509 \
    -keyout root.example.net.key \
    -out root.example.net.crt \
    -days 3650 \
    -subj "/C=DE/O=example.net/CN=root.example.net"

Server Zertifikat

Schlüssel und Zertifikatsanfrage erstellen

openssl req \
    -new \
    -noenc \
    -out www.example.net.csr \
    -keyout www.example.net.key \
    -subj "/C=DE/O=example.net/CN=www.example.net/emailAddress=admin@example.net" \
    -addext "subjectAltName = DNS:example.net, IP:127.0.0.1"

Zertifikat, signiert von der CA, aus Zertifikatsanfrage erstellen

openssl x509 \
    -req \
    -CAkey root.example.net.key \
    -CA root.example.net.crt \
    -in www.example.net.csr \
    -out www.example.net.crt \
    -copy_extensions copy \
    -days 365

Diagnose

Befehle zum überprüfen und zur Fehlersuche

Inhalt einer Zertifikatsanfrage prüfen

openssl req -in www.example.net.csr -text

Inhalt eines Zertifikates prüfen

openssl x509 -in www.example.net.crt -text

Passen Schlüssel und Zertifikat zusammen, die Prüfsummen müssen identisch sein

openssl x509 -in www.example.net.crt -noout -modulus | md5sum
openssl rsa -in www.example.net.key -noout -modulus | md5sum

Passen Zertifikat zum Root- Zertifikat

openssl verify -CAfile root.example.net.crt www.example.net.crt

Installation

Einrichten von Root- und Server- Zertifikat auf einem Debian System.

Speicherorte:

Root- Zertifikat nachdem es unter /usr/share/ca-certificates/ abgelegt wurde zu den vertrauenswürdigen Zertifikaten im System hinzufügen.

1echo root.example.net.crt >> /etc/ca-certificates.conf
2update-ca-certificates