Estoy probando la funcionalidad de revocación de certificados de un dispositivo CMTS. Esto requiere que configure un respondedor OCSP. Como solo se usará para pruebas, supongo que la implementación mínima proporcionada por OpenSSL debería ser suficiente.
Extraje el certificado de un cable módem, lo copié en mi PC y lo convertí al formato PEM. Ahora quiero registrarlo en la base de datos OpenSSL OCSP e iniciar un servidor.
He completado todos estos pasos, pero cuando hago una solicitud de un cliente, mi servidor siempre responde con "desconocido". Parece ser completamente inconsciente de la existencia de mi certificado.
Agradecería enormemente si alguien estuviera dispuesto a echar un vistazo a mi código. Para su comodidad, he creado un único script que consiste en una lista secuencial de todos los comandos utilizados, desde la configuración de la CA hasta el inicio del servidor: http://code.google.com/p/stacked-crooked/source/browse/ trunk / Misc / OpenSSL / AllCommands.sh
También puede encontrar el archivo de configuración personalizado y el certificado con el que estoy probando: http://code.google.com/p/stacked-crooked/source/browse/trunk/Misc/OpenSSL/
Cualquier ayuda sería muy apreciada.
Respuestas:
En caso de que esté interesado: aquí está mi solución.
Primero abandoné el contestador OCSP de OpenSSL. No se puede usar para certificados que no se hayan creado con su CA autofirmado.
Luego usé las bibliotecas OpenCA para crear una utilidad de línea de comandos que es capaz de crear una respuesta OCSP a partir de una solicitud OSCP. Funciona completamente basado en archivos: lo ejecuta con una solicitud OSCP con formato DER como archivo de entrada y genera un archivo de respuesta OCSP con formato DER.
Un segundo argumento para la utilidad de línea de comandos es el estado de revocación: bueno, revocado o desconocido. El estado del certificado en el archivo de respuesta será el mismo que el argumento pasado. El código se basa en esta muestra , que The Rook me señaló en esta publicación .
El paso final fue crear un servidor HTTP que se basa en la utilidad de línea de comandos. Usé el marco Merb de Ruby para eso. Una característica ingeniosa es que el estado de revocación se puede solicitar como una URL HTTP, por ejemplo: http://127.0.0.1:5000/good .
Actualizar
Como los enlaces anteriores están rotos, publicaré el contenido del script aquí:
AllCommands.sh:
openssl.cnf:
thirdparty.pem:
La utilidad de línea de comandos que usa bibliotecas OpenCA está escrita en C:
fuente