wake-up-neo.com

So überprüfen Sie eine öffentliche RSA-Schlüsseldatei

In einem Shell-Skript möchte ich die öffentliche RSA-Datei überprüfen. Alles, was ich tun möchte, ist die Suche nach einer Möglichkeit, diese Datei zu überprüfen, eine echte öffentliche Schlüsseldatei, sonst nichts.

Kann ich Experten fragen, wie ich diese Eingabedatei überprüfen kann, um zu überprüfen, ob es sich um eine echte öffentliche Schlüsseldatei handelt, keine reguläre Datei. 

Ich werde diese Datei mit dem öffentlichen Schlüssel in Zukunft verwenden, um eine eingehende verschlüsselte GZIP-Datei zu überprüfen. Dies ist jedoch vorerst nicht möglich.

Alles, was ich möchte, ist, die Eingabedatei zu überprüfen, um ihre echte RSA-Public-Key-Datei zu prüfen, keine gewöhnliche Datei.

beispiel: Wenn die Datei ‘public.pem’ ist, möchte ich nur prüfen, ob es sich um eine echte RSA-Datei mit öffentlichen Schlüsseln handelt, und nicht nur eine Datei mit Texten oder Dateien ist nicht beschädigt. 

weitere mögliche Überprüfungen habe ich gefunden Überprüfungsdatei erhielt Text ‘BEGIN PUBLIC KEY’ und ‘END PUBLIC KEY’ Dieser Befehl wurde auch in google gefunden 

‘openssl rsa -noout -text -inform PEM -in pubkey.pem -pubin’

Vielen Dank

8
csf

Es ist möglich, jeden Parser mit öffentlichen Schlüsseln, einschließlich openssl, zu verwenden oder selbst den Schlüssel zu analysieren, da das Format nicht so schwierig ist.

Befehlszeilentools legen einen Exit-Code ungleich Null fest, wenn die Analyse fehlschlägt:

openssl rsa -inform PEM -pubin -in pubkey.pem -noout &> /dev/null
if [ $? != 0 ] ; then
    echo "this was definitely not a RSA public key in PEM format"
    exit 1
fi

Nur um einen öffentlichen Schlüssel zu überprüfen:

openssl pkey -inform PEM -pubin -in pubkey.pem -noout &> /dev/null
if [ $? != 0 ] ; then
    echo "this was definitely not a public key in PEM format"
    exit 1
fi
17
divanov

Das folgende Skript sollte für alle PEM-formatierten Schlüssel und Zertifikate funktionieren, die von OpenSSL unterstützt werden. Ich habe es auf verschiedenen gültigen und ungültigen ECDSA- und RSA-Schlüsseln mit übereinstimmenden und nicht übereinstimmenden Zertifikaten getestet.

Speichern Sie dies als verify-cert-key:

#!/usr/bin/env bash
certFile="${1}"
keyFile="${2}"
certPubKey="$(openssl x509 -noout -pubkey -in "${certFile}")"
keyPubKey="$(openssl pkey -pubout -in "${keyFile}")"
if [[ "${certPubKey}" == "${keyPubKey}" ]]
then
  echo "PASS: key and cert match"
else
  echo "FAIL: key and cert DO NOT match"
fi

Mach es ausführbar:

chmod +x verify-cert-key

Führen Sie es für ein Zertifikat und einen Schlüssel aus:

./verify-cert-key server-crt.pem server-key.pem
0
Alain O'Dea