Herausfinden, ob ein Zertifikat einen Elliptic-Curve- oder einen RSA-Schlüssel hat

English Deutsch

Sie können openssl verwenden, um herauszufinden, ob Ihr Zertifikat eine Elliptic Curve (z.B. ECDSA) oder einen RSA-Schlüssel verwendet, mit dem folgenden Befehl, wobei Sie cert.pem durch den Pfad Ihres Zertifikats ersetzen:

example-8.sh

Wenn der Schlüssel des Zertifikats ein Elliptic-Curve-Schlüssel ist, wird ausgegeben:

example-7.txt

Wenn der Schlüssel des Zertifikats ein anderer Schlüsseltyp wie ein RSA-Schlüssel ist, wird ausgegeben:

example-6.txt

Funktionsweise

Zuerst weisen wir OpenSSL an, Informationen über das Zertifikat auszugeben:

example-5.sh

Dann suchen wir mit grep nach ecPublicKey. Dies liegt daran, dass für Elliptic-Curve-Schlüssel die Ausgabe des obigen openssl-Befehls Folgendes enthält

example-4.txt
    Public Key Algorithm: id-ecPublicKey
        Public-Key: (384 bit)
        pub:

während es für RSA-Schlüssel so aussieht:

example-3.txt
    Public Key Algorithm: rsaEncryption
        RSA Public-Key: (2048 bit)
        Modulus:

Der grep-Befehl wird nach /dev/null weitergeleitet, da wir nicht an seiner Ausgabe interessiert sind, sondern nur an seinem Rückgabewert (der in der Shell als $? verfügbar ist). grep gibt einen Rückgabewert von 0 zurück, wenn und nur wenn es mindestens eine Übereinstimmung in der Eingabe findet. Andernfalls hat es einen Rückgabewert von 1. In unserem Fall bedeutet dies, dass wir einen Rückgabewert von 0 erhalten, wenn ecPublicKey irgendwo in der Ausgabe erscheint. Wir nehmen an, dass diese Zeichenfolge nur im Abschnitt Subject Public Key Info: auftreten wird. Während es theoretisch möglich ist, dass ecPublicKey in benutzerdefinierten Feldern des Zertifikats erscheint, ist dies äußerst unwahrscheinlich und könnte durch die Verwendung eines regulären Ausdrucks in grep abgemildert werden

Wir können dann dieses bash-Snippet verwenden:

example-2.sh
then
    # TODO Code einfügen, falls grep NICHTS findet
else
    # TODO Code einfügen, falls grep mindestens eine Zeile findet
fi

das wir so verwenden:

example-1.sh

d.h. abhängig vom Rückgabewert von grep geben wir die korrekte Meldung aus.


Check out similar posts by category: Networking