Validación OCSP de DNI Electrónico

1,391 views
Skip to first unread message

Carlos Admirador

unread,
Jul 3, 2015, 7:33:11 PM7/3/15
to altnet-...@googlegroups.com
Hola grupo !!! estoy realizando una aplicación web ASP.NET C# y se necesita integrar autenticación por DNI Electrónico.

Y además, incluir la validación del certifcado de DNIE del usuario utilizando servidores OCSP de la Policia.

Hay mucha información, no sé si completa, pero muy dispersa, entre Inteco, Incibe, algunas webs como dnielectronico, usatudnie, y algunas otras. No sé si alguna ya ha quedado obsoleta.

No he visto implementaciones en C# .NET ni sé si Microsoft se ha implicado en estos temas.

¿Podrían darme toda la información técnica disponible para estos temas, sobre todo, la validación del DNIE conOCSP, y si fuera posible ejemplos completos de código fuente sea en Java, mejor en C#.?

Muchas gracias de antemano.
Saludos
Carlos

Carlos Admirador

unread,
Aug 14, 2015, 7:45:18 AM8/14/15
to AltNet-Hispano
Hola gente!! Sigo con varios fuegos, y soy más topre que el Rey Juan Carlos I programando, vaya.

La idea es realizar la validación OCSP de certicado de DNIe dentro de procesos de autenticación entre cliente y servidor IIS-ASPnet. Ampliando se puede pensar en extraer la identidad del usuario y realizar firmas electrónicas de cualquier tipo de archivo o fichero.

Desde mi absoluta ignoracia y torpeza, tengo estas impresiones.

La información está muy dispersa con tantos "entes" como zonatic.usatudni, inteco, opendni, oficinavirtual.mityc.es, forja.cenatic.es, dnielectronico.es, INCIBE, RED.es, administracionelectronica.gob.es, ...
Alguno de estos entes y su conocimiento ha desaparecido (o se ha perdido parte) como INTECO, que ahora es INCIBE, y sus responsabilidades con el DNIE ahora parece que es de RED.es. Pero no he llegado a más información.

Al final encuentras documentación, alguna de hace muchos años, pero no profundiza técnicamente en C#
https://www.incibe.es/extfrontinteco/img/File/intecocert/dnie/pdf/guiades.pdf
http://webcastlive.es/zonatic01/archivos/Ponencia_DNIe_Autenticacion.pdf
http://www.dnielectronico.es/PortalDNIe/recursos/img/Oficina_prensa/Documentos/060216/doc_firma_dgp.pdf

Se puede encontrar oficialmente un ejemplo en JAVA sobre OCSP
http://oficinavirtual.mityc.es/componentes/MITyCLibOCSP/integrator-guide/generic-ocsp-validation.html

Googleando encuentras algo más en Java
http://proxyinverso.blogspot.com.es/2013/03/validacion-de-certificados-mediante-ocsp.html

https://github.com/Emergya/opensc-testing/blob/master/opendnie-testing/src/main/java/es/cenatic/opendnie/ValidacionOCSPDNIe.java

En .NET aparecen cosas de compañeros desarrolladores, nada oficial
https://github.com/search?l=csharp&q=ocsp+dnie&ref=searchresults&type=Code&utf8=%E2%9C%93

Hace años en 2007 hubo un seminario al respecto, pero no se encuentra material ni código fu ente
http://www.dni.org.es/2007/05/01/seminariotaller-practico%E2%80%9Dprogramacion-de-aplicaciones-para-uso-del-dni-electronico%E2%80%9D/


PlainConcepts en codeplex hizo algo hace años, creo que quedó obsoleto o en desuso.


Este vídeo expone una aplicación .NET, pero no incluye código fuente, que emplea los certificados del DNIe para extraer la identidad del usuario y realizar firmas electrónicas de cualquier tipo de archivo o fichero. La otra parte esta desarrolla en un entorno web, y realiza procesos de autenticación mutua entre cliente y servidor con los certificados del DNIe, mediante la configuración de un servidor IIS y un módulo HTTP personalizado para autenticación

https://www.youtube.com/watch?v=P_6TI6Ar79E

Alguna experiencia con DNIe en asp.net ? Me sería de gran utilidad.

Saludos
Carlos

Kiquenet

unread,
Aug 14, 2015, 2:10:27 PM8/14/15
to AltNet-Hispano
Hola Carlos.

Tienes toda la razón que la información está muy dispersa, inexistente o en desuso. Imagino te refieres a la versión DNIe 2.0. Y veremos ahora que pasa con el DNIe 3.0 (con NFC),

Te cuento mi experiencia. 

Esta página me ayudó mucho para configuración de certificados en el servidor IIS, HTTPS - SSL, CRLs, diferenciar entre certificados de cliente (los de DNIe de autenticación y firma) y certificados de servidor (de raíz DNIE), errores 403, etcétera



Hace años la Oficina Técnica me comentaba:

"En resumen, para validar un certificado vía OCSP es preciso atacar a un OCSP Responder que tenga información disponible sobre el estado de validez de los certificados expedidos por una determinada CA (Certificate authority). Dicho protocolo OCSP (http://tools.ietf.org/html/rfc2560) es un estándar de red muy difundido para la consulta del estado de los certificados.

Otro mecanismo de validación son las CRL (Certificate Revocation List), pero al contener información sensible, posiblemente sujeta a la ley de protección de datos personales, no se suelen publicar. Por eso, el ministerio pone a disposición del ciudadano, gratuitamente, un OCSP Responder con información sobre la plataforma de certificados del DNI electrónico, que existe bajo la URL "http://ocsp.ctpa.mityc.es".


Por tanto, el DNIe sólo permite la consulta de estado de certificado a través del protocolo OCSP (Online Certificate Status Protocol). Esto es así para mantener privadas las listas de revocación de certificados (CRLs). Sólo las autoridades permitidas por la DGP pueden acceder a tales listas para dar servicio de AV (Autoridad de Validación) del DNIe mediante OCSP.

Sugerimos que se consulte la librería BouncyCastle (http://www.bouncycastle.org/csharp/), en su versión C#, ya que incluye el tratamiento de consultas y respuestas OCSP, si bien no el protocolo de transporte. Sobre esta librería es relativamente sencillo implementar la capa de transporte de las consultas (en la mayoría de las AVs es HTTP o HTTPs).
."

En su momento, la empresa eligió que se validará el certificado de DNIe con una empresa externa (ipsCA, que ya no existe). Ahora no está funcionando por tanto. Habría que buscar otro proveedor que haga la validación OCSP o implementarla directamente.
Se tenían dos sitios ASPnet en IIS, uno http y el otro configurado como https-SSL para aceptar certificados de cliente de entidad autorizada DNIE (AC Root).

"Para los certificados de DNIE sólo se puede comprobar el estado de revocación del certificado a través del protocolo OCSP (comunicando con los servidores ocsp de la Policia, que es lo que hace el WebService de ipsCA, una empresa externa). No existe la posibilidad de validar directamente el estado del certificado contra una CRL."

El OCSP Responder, por ley es un servicio gratuito que dan Ministerio de Presidencia y la FNTM; http://av-dnie.cert.fnmt.es/validayfirma/
 http://ocsp.ctpa.mityc.es dejó de funcionar parece.

Con OCSP yo llegué hasta aquí: se utilizan BouncyCastle libraries para ello, pero no llegué a implementarlo ni probarlo.

http://bouncy-castle.1462172.n4.nabble.com/c-ocsp-verification-td3160243.html

http://forums.iis.net/t/1100044.aspx


En github puedes buscar código que comparte la comunidad (gracias!)




Espero que te sea útil. Y si logras avances puedas compartirlos con el grupo.

Kiquenet

unread,
Aug 16, 2015, 12:35:00 PM8/16/15
to AltNet-Hispano
La URL del OCSP Responder es http://ocsp.dnie.es

OCSP Responder FNMT-RCM DNIE

Esto es una Autoridad de Validacion compatible con IETF RFC 2560

Kiko

unread,
Apr 27, 2016, 2:32:11 PM4/27/16
to AltNet-Hispano
No se si te llegará a tiempo esta respuesta, porque la página está en proceso de cierre, pero en CENATIC aún existe un proyecto de Framework DNIe


Mirando las descargas, veras que tienen un framework, y programas ejemplo que lo usan para validar, firmar y votación electrónica usando el DNIe. Pero lo que te permiten descargar ahís son tan solo los EJECUTABLES.

Sin embargo, hay una pestaña que te lleva al repositorio SCM.


Puedes descargarte TODOS LOS FUENTES mediante subversion. En la misma página tienes el comando de descarga y la clave. Así que, los pasos son:

1.- Si no tienes el Subversion, instálatelo en un momento. Tienes la version para windows en https://sourceforge.net/projects/win32svn/
2.- Entra en la ventana de comandos (cmd.exe), navega hacia el directorio donde quieras descargarte los fuentes, y escribe el comando:


Te dara un aviso de que la página no tiene el certificado correcto (como están desmontándola, a día de hoy el certificado de https ya no es valido). No pasa nada. Acepta (temporalmente), y descarga. ¡100 Mb! de codigo fuente en C# , C++, Java y PHP ;)

Espero que te sirva



Reply all
Reply to author
Forward
0 new messages