2011-10-08 5 views
1

J'essaie de vérifier le certificat sur une carte intégrée manuellement car elle ne prend pas en charge Openssl ou d'autres bibliothèques. Cependant, il possède des bibliothèques pour les hachages MD5 et SHA1 et le cryptage RSA. De ce que je comprends pour vérifier le certificat, d'abord calculer le hachage SHA1 (ou MD5) du certificat; puis décodez la signature en utilisant la clé publique de CA pour obtenir une valeur hachée. Ces deux valeurs de hachage doivent être identiques.Vérification de la signature du certificat SSL

Le hachage SHA1 produit une valeur de 20 octets et MD5 produit une valeur de 16 octets. Cependant, le décodage RSA de la signature ne le fait pas. Si la clé de l'AC est de 1024 bits, la signature de décodage sera de 80 octets; Si la clé de l'AC est 512 bits, la signature décodée sera de 40 octets. Donc, je ne peux pas vraiment comparer la valeur SHA1 de 20 octets à la signature décodée de 40 ou 80 octets.

Est-ce que je fais quelque chose de mal? Ou suis-je manquer un pas?

+0

FYI: J'essaie d'utiliser une carte intégrée pour vérifier les certificats entrants. Ces certificats seront générés et signés par une autorité de certification privée générée à l'aide d'Openssl. – TSCOconan

Répondre

1

Le bit manquant est l'algorithme de remplissage.

Vous utilisez RSA avec un algorithme de remplissage spécifique, et le même algorithme vous indique également comment prendre le résultat (lorsque vous déchiffrez la signature) et en extraire les données réelles (le hachage).

+0

Merci pour l'info, J'ai une question de suivi. Lorsque j'utilise openssl pour signer des certificats "openssl ca -config ca.cnf -policy policy_anything -out certs/certificate.crt -infiles request.csr" La méthode de remplissage par défaut utilisée par Openssl est PKCS # 5? S'il vous plaît corrigez-moi si je me trompe qu'il n'y a aucun moyen de le changer? Je crois qu'il n'y a pas d'options pour la commande CA ou quoi que ce soit dans le fichier ca.cnf qui nous permet de choisir la méthode Padding? – TSCOconan

+0

Je pense que j'ai fait une erreur dans le commentaire ci-dessus. Openssl utilise PKCS # 1 pour le remplissage, la clé privée/publique et tout ce qui concerne les certificats? Et je suppose qu'il n'y a aucun moyen de dire à Openssl 0 Padding puisque je ne peux pas trouver d'options dans la commande CA pas de fichier.cnf. – TSCOconan

+0

Je ne pense pas que le remplissage peut être changé en utilisant l'outil de ligne de commande. Si vous êtes prêt à écrire du code, c'est possible. Mais vous avez besoin d'une très bonne raison pour ne pas bourrer votre entrée (par exemple si vous faites votre propre remplissage), sinon vous pourriez introduire des faiblesses dans le système. –

Questions connexes