Standardverzeichnisse funktionieren in der OpenSSL-Konfigurationsdatei nicht

Standardverzeichnisse funktionieren in der OpenSSL-Konfigurationsdatei nicht

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 -dwird 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 caBefehl intern verwendet.

Wenn Sie hineinschauen, new_certs_dirwerden Ihnen alle von der Zertifizierungsstelle signierten Zertifikate angezeigt, wenn Sie den openssl caBefehl verwenden. Die Dateinamen bestehen aus der Seriennummer des Zertifikats und einem .pemangehängten Code.

Bei der Verwendung openssl reqdieser Dateien werden diese nicht genutzt.

Auf der Manpage für den reqBefehl 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_keyfileOption 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, .conffunktioniert, wenn Sie den openssl caBefehl 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 reqBefehl generiert diese. Um sinnvolle Werte im CA-Zertifikat zu erhalten, müssen Sie Ihrer .confDatei 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 -configOption 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.txterstellen .serial01

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.

verwandte Informationen