![Standardverzeichnisse funktionieren in der OpenSSL-Konfigurationsdatei nicht](https://rvso.com/image/154454/Standardverzeichnisse%20funktionieren%20in%20der%20OpenSSL-Konfigurationsdatei%20nicht.png)
Ich habe das Verzeichnis in der Datei /etc/ssl/openssl.cnf festgelegt, aber jedes Mal, wenn ich den Befehl ausgebe
openssl req -x509 -newkey rsa:4096 -keyout cakey.pem -out cacert.pem -days 3650
Es platziert die Dateien im Stammverzeichnis des Verzeichnisses, in dem ich arbeite.
[ CA_default ]
dir = /home/will/myCA # Where everything is kept
certs = $dir/certs # Where the issued certs are kept
crl_dir = $dir/crl # Where the issued crl are kept
database = $dir/index.txt # database index file.
#unique_subject = no # Set to 'no' to allow creation of
# several certs with same subject.
new_certs_dir = $dir/newcerts # default place for new certs.
certificate = $dir/cacert.pem # The CA certificate
serial = $dir/serial # The current serial number
crlnumber = $dir/crlnumber # the current crl number
# must be commented out to leave a V1 CRL
crl = $dir/crl.pem # The current CRL
private_key = $dir/private/cakey.pem# The private key
RANDFILE = $dir/private/.rand # private random number file
x509_extensions = usr_cert # The extensions to add to the cert
# Comment out the following two lines for the "traditional"
# (and highly broken) format.
name_opt = ca_default # Subject Name options
cert_opt = ca_default # Certificate field options
# Extension copying option: use with caution.
# copy_extensions = copy
# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
# so this is commented out by default to leave a V1 CRL.
# crlnumber must also be commented out to leave a V1 CRL.
# crl_extensions = crl_ext
default_days = 365 # how long to certify for
default_crl_days= 30 # how long before next CRL
default_md = default # use public key default MD
preserve = no # keep passed DN ordering
# A few difference way of specifying how similar the request should look
# For type CA, the listed attributes must be the same, and the optional
# and supplied fields are just that :-)
policy = policy_match
Wenn die Verzeichnisse funktionieren würden, würde ich dies erwarten
Generating a 2048 bit RSA private key
.................................+++
.................................................................................................+++
writing new private key to '/home/will/myCA/private/cakey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
Schreibe einen neuen privaten Schlüssel in „/home/will/myCA/private/cakey.pem“
Ich habe meine Version von OpenSSL direkt von der Website mithilfe der Binärdateien aktualisiert und sie ist jetzt unter /etc/local/ssl installiert. Leider verstehe ich immer noch nicht, warum die Dateien, die ich mit OpenSSL erstelle, nicht in Ordner/Verzeichnisse sortiert werden.
Weiß jemand, warum die Standardverzeichnisse nicht funktionieren?
Vielen Dank
Wille
UPDATE 11:00 30/05/2019
Ich habe den Befehl ausgeführt
openssl req -x509 -newkey rsa:4096 -days 3650
Der Schlüssel wird jedoch nur im Terminalfenster gedruckt und nicht in einer Datei ausgegeben.
Ich habe dem Befehl -noout hinzugefügt, aber die Datei hat sich unter ~privkey.pem gespeichert und nicht in dem Verzeichnis, das ich in der openssl.cnf-Datei /home/will/demoCA festgelegt habe.
Mir ist aufgefallen, dass die Datei im Arbeitsverzeichnis gespeichert ist, in dem das Terminal geöffnet ist.
mit dem Befehl openssl version -d
wird der Standardspeicherort der Konfigurationsdatei angezeigt, in der ich die Verzeichnisse festgelegt habeOPENSSLDIR: "/usr/local/ssl"
Antwort1
Die Dateien, auf die verwiesen wird, [ CA_defaults ]
werden vom openssl ca
Befehl intern verwendet.
Wenn Sie hineinschauen, new_certs_dir
werden Ihnen alle von der Zertifizierungsstelle signierten Zertifikate angezeigt, wenn Sie den openssl ca
Befehl verwenden. Die Dateinamen bestehen aus der Seriennummer des Zertifikats und einem .pem
angehängten Code.
Bei der Verwendung openssl req
dieser Dateien werden diese nicht genutzt.
Auf der Manpage für den req
Befehl steht Folgendes:
-out Dateiname
Dies gibt den Namen der Ausgabedatei an, in die geschrieben werden soll, oder standardmäßig die Standardausgabe.
Der Befehl wird daher unter dem angegebenen Dateinamen in dem Verzeichnis geschrieben, aus dem Sie ihn ausführen, oder er wird in die Standardausgabe geschrieben.
-keyout Dateiname
Dies gibt den Dateinamen an, in den der neu erstellte private Schlüssel geschrieben werden soll. Wenn diese Option nicht angegeben ist, wird der in der Konfigurationsdatei vorhandene Dateiname verwendet.
Dadurch wird in die Datei mit dem angegebenen Namen geschrieben, die sich ebenfalls in dem Verzeichnis befindet, aus dem Sie den Befehl ausführen. Alternativ wird in die Datei mit dem in der default_keyfile
Option angegebenen Namen geschrieben ( [ req ]
natürlich darunter).
In beiden Fällen können Sie in Ihren Befehlen den absoluten Pfad zu den Dateien angeben, wenn Sie nicht möchten, dass diese im aktuellen Verzeichnis abgelegt werden.
Die Struktur, die Sie in der Datei konfiguriert haben, .conf
funktioniert, wenn Sie den openssl ca
Befehl verwenden, um eine Anfrage von einem Untergebenen (CA oder End-Entity) zu signieren. Um jedoch an den Punkt zu gelangen, an dem Sie Zertifikate signieren können, müssen das CA-Zertifikat und der Schlüssel vorhanden sein. Ihr openssl req
Befehl generiert diese. Um sinnvolle Werte im CA-Zertifikat zu erhalten, müssen Sie Ihrer .conf
Datei weitere hinzufügen.
Etwas Ähnliches wie das Folgende sollte Ihnen den Einstieg erleichtern:
[ req ]
# Don't prompt for the DN, use configured values instead
# This saves having to type in your DN each time.
prompt = no
string_mask = default
distinguished_name = req_dn
# The size of the keys in bits:
default_bits = 4096
[ req_dn ]
countryName = GB
stateOrProvinceName = Somewhere
organizationName = Example
organizationalUnitName = PKI
commonName = Example Test Root CA
[ ca_ext ]
# Extensions added to the request
basicConstraints = critical, CA:TRUE
keyUsage = critical, keyCertSign, cRLSign
Erstellen Sie das CA-Zertifikat mit einer leicht modifizierten Version Ihres vorherigen Befehls:
openssl req -x509 -newkey rsa:4096 -keyout /home/will/myCA/private/cakey.pem -out /home/will/myCA/cacert.pem -days 3650 -nodes -config <path-to>/openssl.cnf -extensions ca_ext
Hinweis: Sie benötigen die -config
Option nur, wenn Sie die Standardkonfigurationsdatei nicht verwenden/bearbeiten.
Wenn alles funktioniert, verfügen Sie über das richtige Zertifikat und den richtigen Schlüssel für Ihre CA-Konfiguration oben. Bevor Sie mit dem Befehl Zertifikate signieren können openssl ca
, müssen Sie sicherstellen, dass sie vorhanden sind, und sie mit einer anfänglichen Seriennummer (z. B. ) index.txt
erstellen .serial
01
OpenSSL ist das Schweizer Taschenmesser der Kryptografie und bietet daher viele Optionen. Leider ist das Lesen der Manpages die einzige Möglichkeit, es zu verstehen.