OpenSSL CNF-Verwendungsvariable

379
Kyle B

Wie verwende ich eine Variable aus Benutzereingaben in einer OpenSSL CNF-Datei?

Ich habe folgende CNF:

[ req_distinguished_name ] emailAddress = Email Address  # specify defaults emailAddress_default = John.Smith@company.mail 

Wie kann ich die E-Mail verwenden , die der Benutzer für die emailAddressOption im folgenden Abschnitt auswählt, ohne ein Skript zum Erstellen des CNF zu verwenden?

[ usr_cert ] # Extensions for client certificates (`man x509v3_config`). subjectAltName = email:John.Smith@company.mail 
1

1 Antwort auf die Frage

0
garethTheRed

In den Konfigurationsdateien von OpenSSL können Sie einen Wert aus einem anderen Abschnitt verwenden $. Es scheint jedoch, dass diese früh im Prozess (vor der Benutzereingabe) analysiert werden, und daher eine Zeile wie:

[ req_distinguished_name ] emailAddress = Email Address emailAddress_max = 64  ....  [usr_cert] # Extensions for client certificates (`man x509v3_config`). subjectAltName = email:$ 

würde zu einem alternativen Antragstellernamen führen:

X509v3 Subject Alternative Name: email: Email Address 

(Voraussetzung Email Addressist die Aufforderung) und nicht die eingegebene E-Mail-Adresse.

Alternativ können Sie Ihre E-Mail-Adresse als Umgebungsvariable festlegen, bevor Sie OpenSSL ausführen, und Folgendes in Ihrer Konfiguration verwenden:

[usr_cert] # Extensions for client certificates (`man x509v3_config`). subjectAltName = email:$ 

und Renn:

email_address="johndoe@example.com" openssl req -new -newkey test.key -out test.csr -nodes 

Die resultierende Anfrage ( test.csr) wird Folgendes haben:

X509v3 Subject Alternative Name: email: johndoe@example.com 

Dies funktioniert möglicherweise nicht für Sie, abhängig von Ihrer Anwendung natürlich, aber es ist wahrscheinlich das nächste, was Sie bekommen können.

Eine weitere Alternative wäre ein Skript, das eine OpenSSL-Konfiguration mit der korrekten E-Mail-Adresse und anderen bereits konfigurierten Details generiert.