OCSP: Validar estado de revocación de certificados FNMT mediante protocolo OCSP y openSSL
OCSP (Online Certificate Status Protocol) es un protocolo que se emplea para determinar el estado y vigencia de un certificado en un momento determinado. La FNMT (Fabrica Nacional de Moneda y Timbre) ofrece este servicio para los certificados emitidos por cualquiera de sus autoridades certificadoras.
Hasta no hace mucho, este servicio se ofrecía por la FNMT de forma privada para empresas y con coste por consulta. Imaginamos que a raíz de las distintas directivas europeas, los servicios OCSP de la FNTM ahora se ofrecen de forma abierta y gratuita.
En este post os enseñaremos a emplear la herramienta openssl para verificar el estado de alguno de los certificados emitidos por la FNMT en función del tipo de certificado que se trate.
Certificados de Persona Física
La vigencia de los certificados de persona física se consultan contra la siguiente URL: http://ocspusu.cert.fnmt.es/ocspusu/OcspResponder
Para ello necesitaremos el certificado AC Raíz de los certificados emitidos por la autoridad subordinada AC Usuarios de la FNMT, y el certificado raíz de AC Raíz FNMT-RCM.
Para poder emplear estos certificados con cualquier versión de openssl es conveniente que estén en formato Base64 (PEM), más abajo incluyo un tutorial para hacer la conversión desde windows.
Para hacer la consulta podemos optar por consultar por el serial id del certificado si lo conocemos:
1openssl ocsp -issuer acusuarios.cer -serial 0x509a00271d66657854590489c65ce8fc -url http://ocspusu.cert.fnmt.es/ocspusu/OcspResponder -CAfile acraiz.cer
- ocsp: indicar a openssl que queremos emplear la herramienta de consultas ocsp
- issuer: Fichero PEM con el certificado emisor del certificado que queremos consultar (AC Usuarios)
- serial: número de serie del certificado que vamos a consultar
- url: dirección del servicio ocsp que queremos consultar
- CAfile: Fichero PEM con el certificado de la CA que valida al emisor del certificado (AC Raíz FNMT-RCM)
O directamente pasando un fichero con el certificado:
1openssl ocsp -issuer acusuarios.cer -url http://ocspusu.cert.fnmt.es/ocspusu/OcspResponder -CAfile acraiz.cer -cert testpfisica.cer
- cert: Fichero PEM con el certificado sobre el que queremos hacer la consulta
Resultado
En este caso estamos haciendo la consulta sobre un certificado de pruebas que se encuentra revocado.
La respuesta que obtendremos será:
Certificados de Representación
La vigencia de los certificados de representación se consulta contra la siguiente URL: http://ocsprep.cert.fnmt.es/ocsprep/OcspResponder
Del mismo modo que en el caso de los certificados de persona física, aquí necesitaremos el certificado AC Raíz de la autoridad subordinada AC Representación, y el certificado AC Raiz FNMT-RCM.
Del mismo modo que en el caso anterior, podemos consultar por serial id:
1openssl ocsp -issuer acrepresentacion.cer -serial 0x3ccb93f368b4f2f9570fa24de6053fa4 -url http://ocsprep.cert.fnmt.es/ocsprep/OcspResponder -CAfile acraiz.cer
O directamente pasando un fichero PEM con el certificado a consultar a openssl:
1openssl ocsp -issuer acrepresentacion.cer -url http://ocsprep.cert.fnmt.es/ocsprep/OcspResponder -CAfile acraiz.cer -cert testRepPJuridica.cer
Es conveniente notar que en este caso estamos empleando como issuer el certificado raíz de AC Representación y como url la dirección del responder específico.
Resultado
Del mismo modo que en el caso anterior estamos haciendo la consulta sobre un certificado de pruebas que se encuentra revocado.
Certificados Clase 2 CA
Aunque estos certificados están siendo sustituidos por los de representación de persona jurídica y ya se encuentran obsoletos, puede resultar conveniente consultar el estado de los mismos ya que aun quedan muchos pendientes de caducar y todavía están en uso.
La vigencia de los certificados de Clase 2 CA se consultan contra la siguiente URL: http://ocspc2.cert.fnmt.es/ocspc2/OcspResponder
Para poder validar la respuesta del servidor OCSP necesitaremos el certificado raíz FNMT Clase 2 CA.
Al igual que en los casos anteriores, podemos hacer la consulta directamente por el serial id del certificado:
1openssl ocsp -issuer acraizClase2CA.cer -serial 0x3c788711 -url http://ocspc2.cert.fnmt.es/ocspc2/OcspResponder -CAfile acraizClase2CA.cer
En este caso, tanto el issuer como el CAfile serán el mismo fichero, ya que el emisor del certificado a verificar y la autoridad certificadora son la misma.
Asimismo, el serial id será más corto, ya que en este caso se utiliza el algoritmo SHA1 en lugar del SHA256 que se emplea en los anteriores.
También podemos hacer la consulta pasando el certificado en un fichero PEM:
1openssl ocsp -issuer acraizClase2CA.cer -url http://ocspc2.cert.fnmt.es/ocspc2/OcspResponder -CAfile acraizClase2CA.cer -cert testClase2CA.cer
Respuestas
En la imagen siguiente vemos el estado del certificado que hemos consultado por id, que se encuentra revocado (desde 2004).
En la siguiente imagen vemos el estado correcto de un certificado que hemos consultado por fichero.
Exportar certificado en formato PEM (Base64) desde Windows
Tal como hemos mencionado antes, para facilitar el funcionamiento de la herramienta OpenSSL en todos los entornos, lo conveniente es emplear ficheros de certificados en formato PEM.
Desde Windows podemos exportar los certificados a este formato de forma sencilla siguiendo estos pasos:
Abrimos el certificado con la herramienta específica de Windows y consultamos los detalles:
Presionamos sobre el botón copiar a fichero, a continuación presionamos sobre siguiente, elegimos no exportar la clave privada y en las opciones de formato elegimos Codificación Base-64 X.509.
Finalmente elegimos la ruta dónde lo queremos guardar y terminamos la operación.
Comentarios en "OCSP: Validar estado de revocación de certificados FNMT mediante protocolo OCSP y openSSL"
a dia de hoy (06/02/2019), no consigo conectar a ningun ocsp de la fnmt por openssl, y eso que he encontrado varias url: una la mostrada en esta entrada, otra que seria http://ocspfnmtrcmca.cert.fnmt.es/ocspfnmtrcmca/OcspResponder segun la web de la FNMT, y otra que es la que muestra en el certificado emitido por FNMT usuarios (ocspfnmtrcmca.cert.fnmt.es).
Con los certificados descargados y convertidos a .pem, todos dan error de conexion al intentar el comando, no se pueden conectar al OCSP. Ejemplo:
Alguna idea?
Tengo el mismo que problema que comentas. Has podido resolverlo?
Muchas gracias.
Un saludo,