OpenSSL-Signatur mit PEM und einem ALIAS

404
Markino

Ich muss das hier direkt fragen, denn nach vielem Googeln und Suchen auf StackExchange bin ich bisher noch nicht mit relevanten Informationen gelandet.

Angenommen, ich verwende OpenSSL (auf einer Windows-Plattform, wenn es darauf ankommt) und eine PEM-Datei zum Signieren einer TXT-Datei. Der Befehl, den ich benutze, ist

openssl smime -sign -in unsignedfile.txt -outform der -binary -nodetach -out signedfile.txt.p12 -signer certificate.pem -passin pass:PASSWORD 

So weit, ist es gut.

Meine Frage ist: Sollte die PEM-Datei MEHR ALS EINE Paare von privatekey / certificate enthalten - jedes von ihnen wird durch einen "friendlyName" (den ich als Aliasname und Bezeichner verstehe) identifiziert. Wie kann ich den Alias ​​angeben, den ich verwenden möchte in der Befehlszeile oben?

Ist das überhaupt möglich?

Ich habe nach der Option -alias unter https://wiki.openssl.org/index.php/Command_Line_Utilities gesucht, aber nicht viel geholfen.

Danke im Voraus.

1

1 Antwort auf die Frage

0
dave_thompson_085

Nicht möglich.

PEM-Dateien können im Allgemeinen mehrere "Objekte" enthalten. Die meisten OpenSSL-Befehlszeilenoperationen, einschließlich dieser, verwenden jedoch nur den ersten Typ des gewünschten Typs - den ersten Schlüssel in einer Schlüsseldatei, das erste Zertifikat in einer Zertifizierungsdatei. usw. Insbesondere wenn Sie sowohl einen privaten Schlüssel als smime -signauch ein Zertifikat benötigen, können Sie sowohl den (ersten) Schlüssel als auch das (erste) Zertifikat aus einer einzigen Datei lesen. Bei einigen Operationen oder Optionen werden alle Zertifikate in einer Datei verwendet, aber selbst dort können Sie keine andere als die erste auswählen.

Eine PKCS12-Datei enthält strukturierte Daten, die einem Schlüssel und einem Zertifikat verschiedene Attribute, einschließlich "friendlyname", zuordnen können. Wenn Sie ‚importieren‘ ein PKCS12 mit openssl pkcs12 -in file.p12 ...dem Ausgang diese Attribute enthält, aber im PEM - Format sind sie nur Kommentare und ignoriert, wie alles andere, die nicht innerhalb eines gültigen ist ----BEGIN xzu -----END xblockieren. Wenn Sie ein PKCS12 erstellen, können openssl pkcs12 -export -out file.p12 ...Sie in ähnlicher Weise benutzerfreundliche Werte angeben, die in der PKCS12 als Befehlszeilenoptionen verwendet werden. Die in der PEM-Eingabe enthaltenen Werte werden jedoch ignoriert. (Sie können keine anderen Attribute angeben, obwohl localkeyid automatisch generiert wird.)

Sie können awk oder ähnliches verwenden, um die gewünschten Blöcke aus der Datei auszuwählen

awk -vwant=smeagol '/friendlyName:/ /^-----BEGIN/,/^-----END/' <manyPEM >onePEM # and then use onePEM 

PS: Die Datenstruktur, die von ausgegeben wird, smime -outform derist CMS, das von PKCS7 abgeleitet wird und oft noch als PKCS7 bezeichnet wird. Nicht PKCS12, was sehr unterschiedlich ist. Wenn man es benennt, .p12wird es wahrscheinlich Menschen verwirren und in die Irre führen, wie zum Beispiel das eigene zukünftige Selbst.

Wie ich vermutete. Vielen Dank für Ihre Antwort. Markino vor 5 Jahren 0