web-dev-qa-db-fra.com

Comment vérifier un fichier de clé publique RSA

Dans un script Shell, je veux vérifier le fichier public RSA . Tout ce que je veux faire, c'est que trouver un moyen de vérifier ce fichier soit un véritable fichier de clé publique, rien d'autre.

Puis-je demander aux experts ici quels sont les moyens par lesquels je peux vérifier ce fichier d'entrée pour vérifier qu'il s'agit d'un véritable fichier de clé publique, et non d'un fichier normal. 

À l'avenir, j'utiliserai ce fichier de clé publique pour valider un fichier gzip de chiffrement entrant, mais cela est hors de portée pour l'instant.

Tout ce que je veux, c'est valider le fichier d'entrée pour vérifier son véritable fichier de clé publique RSA et non un fichier ordinaire. Veuillez noter que je n'ai pas d'autres fichiers avec moi (par exemple: clé privée).

par exemple: si le fichier est ‘public.pem’, je veux simplement vérifier qu’il s’agit d’un véritable fichier de clé publique RSA et pas seulement d’un fichier contenant des textes ou d’un fichier qui n’est pas corrompu . 

autres vérifications possibles J'ai trouvé chèque fichier obtenu le texte ‘BEGIN PUBLIC KEY’ et le ‘END PUBLIC KEY’ Cette commande a également été trouvée dans google. Existe-t-il un meilleur moyen de le faire en utilisant openssl 

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

Merci

8
csf

Il est possible d'utiliser n'importe quel analyseur de format de clé publique, y compris openssl ou même d'analyser vous-même la clé, le format n'étant pas si difficile.

Les outils de ligne de commande définissent un code de sortie non nul, en cas d'échec de l'analyse:

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

Juste pour vérifier n'importe quelle clé publique:

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

Le script suivant devrait fonctionner pour toutes les clés et tous les certificats au format PEM pris en charge par OpenSSL. Je l'ai testé sur diverses clés ECDSA et RSA valides et non valides avec des certificats correspondants et non compatibles.

Enregistrez ceci sous la clé verify-cert-cert:

#!/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

Rendez-le exécutable:

chmod +x verify-cert-key

Exécutez-le sur un cert et une clé:

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