Eigene CA (Zertifizierungsstelle) erstellen und Zertifikate ausstellen – Debian

Hinweis: Wir haben in diesem Artikel möglicherweise Provisions-Links verwendet und sie durch (*) gekennzeichnet. Erfolgt über diese Links eine Bestellung, erhält maffert.net eine Provision. Es entstehen für Sie keine Nachteile beim Kauf oder Preis.

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:

  1. OpenSSL installieren:
    apt-get install openssl
  2. Verzeichnis für das CA erstellen und reinwechseln
    mkdir /root/cacd /root/ca
  3. 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
  4. 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:

  1. 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):

  1. 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
  2. Nun das CSR signieren:
    openssl ca -in maffert-csr.pem -cert cacert.pem -keyfile cakey.pem -days 3650 -out maffert-cert.pem
  3. 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:

  1. Start > Ausführen > certmgr.msc eingeben und Enter
  2. dort dann Rechte Maustaste auf „Vertrauenswürdige Stammzertifiezierungsstellen“ > Alle aufgaben > importieren ..

Bei Debian:

  1. Das Zertifikat (sollte .csr sein) nach „/usr/share/ca-certificates“ kopieren
  2. „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 http://www.maffert.net/wp-content/plugins/wp-monalisa/icons/wpml_good.gif

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert