Je teste la fonctionnalité de révocation de certificats d'un appareil CMTS. Cela me nécessite de configurer un répondeur OCSP. Puisqu'il ne sera utilisé que pour les tests, je suppose que l'implémentation minimale fournie par OpenSSL devrait suffire.
J'ai extrait le certificat d'un modem câble, l'ai copié sur mon PC et l'ai converti au format PEM. Maintenant, je veux l'enregistrer dans la base de données OpenSSL OCSP et démarrer un serveur.
J'ai effectué toutes ces étapes, mais lorsque je fais une demande client, mon serveur répond invariablement par "inconnu". Il semble ignorer complètement l'existence de mon certificat.
J'apprécierais grandement que quelqu'un veuille jeter un œil à mon code. Pour votre commodité, j'ai créé un script unique composé d'une liste séquentielle de toutes les commandes utilisées, de la configuration de l'autorité de certification au démarrage du serveur: http://code.google.com/p/stacked-crooked/source/browse/ trunk / Misc / OpenSSL / AllCommands.sh
Vous pouvez également trouver le fichier de configuration personnalisé et le certificat que je teste avec: http://code.google.com/p/stacked-crooked/source/browse/trunk/Misc/OpenSSL/
Toute aide serait grandement appréciée.
Réponses:
Au cas où vous seriez intéressé: voici ma solution.
J'ai d'abord abandonné le répondeur OCSP d'OpenSSL. Il ne peut pas être utilisé pour les certificats qui n'ont pas été créés avec votre autorité de certification auto-signée.
Ensuite, j'ai utilisé les bibliothèques OpenCA pour créer un utilitaire de ligne de commande capable de créer une réponse OCSP à partir d'une requête OSCP. Il fonctionne entièrement sur fichier: vous l'exécutez avec une requête OSCP au format DER en tant que fichier d'entrée et il génère un fichier de réponse OCSP au format DER.
Un deuxième argument de l'utilitaire de ligne de commande est l'état de révocation: bon, révoqué ou inconnu. Le statut du certificat dans le fichier de réponses sera le même que l'argument passé. Le code est basé sur cet exemple , m'a fait remarquer The Rook dans ce post .
La dernière étape consistait à créer un serveur HTTP qui s'appuie sur l'utilitaire de ligne de commande. J'ai utilisé le framework Merb de Ruby pour cela. Une fonctionnalité intéressante est que l'état de révocation peut être demandé en tant qu'URL HTTP, par exemple: http://127.0.0.1:5000/good .
Mise à jour
Étant donné que les liens ci-dessus sont brisés, je publierai le contenu du script ici:
AllCommands.sh:
openssl.cnf:
thirdparty.pem:
L'utilitaire de ligne de commande utilisant les bibliothèques OpenCA est écrit en C:
la source