Ich möchte meinen eigenen OCSP-Responder einrichten (nur zu Testzwecken). Dazu muss ich ein Stammzertifikat und ein paar daraus generierte Zertifikate haben.
Ich habe es geschafft, mit openssl ein selbstsigniertes Zertifikat zu erstellen. Ich möchte es als Root-Zertifikat verwenden. Der nächste Schritt wäre, die abgeleiteten Zertifikate zu erstellen. Ich kann die Dokumentation dazu jedoch nicht finden. Weiß jemand, wo ich diese Informationen finden kann?
Bearbeiten
Im Nachhinein meine Frage ist noch nicht vollständig beantwortet. Um das Problem zu klären, stelle ich meine Zertifikatskette folgendermaßen dar:
Wurzel -> A -> B -> C -> ...
Ich kann derzeit die ROOT- und A-Zertifikate erstellen, habe aber noch nicht herausgefunden, wie eine längere Kette erstellt werden kann.
Mein Befehl zum Erstellen des Stammzertifikats lautet:
openssl req -new -newkey rsa:1024 -nodes -out ca.csr -keyout ca.key
openssl x509 -trustout -signkey ca.key -days 365 -req -in ca.csr -out ca.pem
Zertifikat A wird folgendermaßen erstellt:
openssl genrsa -out client.key 1024
openssl req -new -key client.key -out client.csr
openssl ca -in client.csr -out client.cer
Dieser Befehl hängt implizit vom Stammzertifikat ab, für das er die erforderlichen Informationen in der Konfigurationsdatei openssl findet.
Zertifikat B muss sich jedoch nur auf A verlassen, das nicht in der Konfigurationsdatei registriert ist, sodass der vorherige Befehl hier nicht funktioniert.
Welche Befehlszeile sollte ich verwenden, um Zertifikate B und höher zu erstellen?
Bearbeiten
fand ich die Antwort in diesem Artikel . Zertifikat B (Kette A -> B) kann mit diesen beiden Befehlen erstellt werden:
# Create a certificate request
openssl req -new -keyout B.key -out B.request -days 365
# Create and sign the certificate
openssl ca -policy policy_anything -keyfile A.key -cert A.pem -out B.pem -infiles B.request
Ich habe auch die Datei openssl.cnf geändert:
[ usr_cert ]
basicConstraints=CA:TRUE # prev value was FALSE
Dieser Ansatz scheint gut zu funktionieren.
quelle
Antworten:
Sie können OpenSSL direkt verwenden.
Erstellen Sie einen privaten Schlüssel der Zertifizierungsstelle (dies ist Ihr wichtigster Schlüssel):
Erstellen Sie Ihr selbstsigniertes CA-Zertifikat:
Stellen Sie ein Client-Zertifikat aus, indem Sie zuerst den Schlüssel generieren, ihn dann anfordern (oder einen von einem externen System bereitgestellten verwenden) und dann das Zertifikat mit dem privaten Schlüssel Ihrer Zertifizierungsstelle signieren:
(Möglicherweise müssen Sie einige Optionen hinzufügen, da ich diese Befehle zusammen mit meiner openssl.conf-Datei verwende. Möglicherweise müssen Sie zuerst Ihre eigene .conf-Datei einrichten.)
quelle
openssl ca -in client.csr -out client.cer -cern ca.pem -keyfile ca.key
, aber ich möchte eindemoCA
Verzeichnis und verschiedene Ausrüstungsgegenstände.Nachdem Sie Ihre Zertifizierungsstelle erstellt haben, können Sie sie folgendermaßen signieren:
Erstellen Sie einen Schlüssel:
Erstellen Sie eine csr:
Unterschreib es :
und so weiter * _A durch * _B und
CA_certificate_you_created.crt
mitcrt_A.crt
undCA_key_you_created.key
mit ersetzenkey_A.key
Dein Wechsel:
bedeutet, dass die von Ihnen ausgestellten Zertifikate zum Signieren anderer Zertifikate verwendet werden können.
quelle
OpenSSL wird mit einem Perl-Skript "CA.pl" geliefert, mit dem Sie ein selbstsigniertes CA- Stammzertifikat zusammen mit dem entsprechenden privaten Schlüssel erstellen können. Außerdem werden einige einfache Dateien und Verzeichnisse bereitgestellt, mit deren Hilfe Sie den Überblick über zukünftige Zertifikate behalten können, die Sie signieren (auch als Problem bezeichnet) ) mit dieser Stammzertifizierungsstelle. Sie können auch andere Schlüsselpaare und Zertifikatsignierungsanforderungen (Certificate Signing Requests, CSRs) generieren und diese CSRs verarbeiten (dh Zertifikate ausstellen) und vieles mehr.
Beachten Sie, dass für viele Produkte CA-Zertifikate ein bestimmtes Attribut enthalten müssen, das sie als CA-Zertifikate kennzeichnet, oder dass sie nicht als gültige Unterzeichner / Aussteller anderer Zertifikate akzeptiert werden. Wenn das selbstsignierte Zertifikat, das Sie erstellt haben, dieses Attribut nicht enthält, haben Sie möglicherweise Probleme, andere Software dazu zu bringen, es wie ein gültiges Stammzertifizierungsstellenzertifikat zu behandeln.
Wenn ich mich richtig erinnere, sieht die Syntax ungefähr so aus:
quelle
/usr/lib/ssl/misc/CA.pl
Ich fand diesen Beitrag: https://stackoverflow.com/questions/19665863/how-do-i-use-a-self-signed-certificate-for-a-https-node-js-server
Es ist für Node.JS, aber das Skript in diesem GitHub- Repository verwendet openSLL-Befehle, um ein Stammzertifizierungsstellenzertifikat und ein Domänenzertifikat zu erstellen.
Ausführen mit:
bash make-root-ca-and-certificates.sh 'example.com'
Oder für localhost mit:
bash make-root-ca-and-certificates.sh 'localhost'
make-root-ca-and-certificates.sh
quelle