Este es el resultado después del primer fwrite
Esta es la primera linea que escribimos en el fichero
Este es el resultado después del segundo fwrite
Esto se sobreescribeinea que escribimos en el fichero
Este es el resultado después del tercer fwrite
Esto se sobreescribeinea que escribimos en el fichero
Esto se añadirá al final
Leyendo con fgetc
He leido el primer carácter: E
He leido el segundo carácter: s
He leido el tercer carácter: t
Ahora el puntero está en el tercer caracter
fgets empezará a leer a partir de el
Con fgets he leido esto: o se sobreescribeinea que escribimos en el fichero
Esto se añadirá al final
Al abrir el fichero de nuevo fgets
comienza desde el principio
Esto se sobreescribeinea que escribimos en el fichero
Esto se añadirá al final
--------------------------------------------------------------
Aqui veremos el contenido (sin etiquetas HTML)de una pagina web
Extraer información de certificados
Validez de los certificados
Las comprobaciones que se realizan sobre los certificados de usuarios presentan una laguna importante. La validez nos indica que un certificado de DNIe no ha sido manipulado y que ha sido emitido por la policía pero no podemos saber si está siendo usado de modo indebido por el titular o por una tercera persona.
Supongamos que perdemos nuestro DNIe, o que simulamos su extravío. En el momento de formular la denuncia, la autoridad gubernativa procede a revocar nuestro certificado digital incorporándolo a la base de datos pública de documentos revocados. Podríamos entender que a partir de ese momento no somos responsables del uso que pueda hacerse del mismo.
Para consultar esa base de datos existe un protocolo conocido como OCSP (Online Certificate Status Protocol) mediante el cual podemos conocer la validez actual de un certificado. Estos servicios de validación del DNIe, según informan en su web, son prestados de forma ininterrumpida todos los días del año por la «Fábrica Nacional de Moneda y Timbre – Real Casa de la Moneda, que prestará sus servicios de validación con carácter universal: ciudadanos, empresas ...»
No ocurre lo mismo con los certificados FNMT ya que en ese caso el acceso al «OCSP responder» no tiene carácter gratuito.
Más abajo tienes un ejemplo de la forma de efectuar la comprobación de la validez del DNIe y, además, podrás ver la forma en la que pueden extraerse los datos personales: nombre, apellidos, nº, periodo de validez e incluso la fecha de nacimiento del titular. Da la impresión de que en un futuro no muy lejano la autentificación, e incluso la restricción de accesos a menores, acabará haciéndose mediante este documento.
Lectura de certificados de cliente
PHP dispone de la función openssl_x509_parse(certificado, booleano) que permite leer los contenidos de un certificado en formato PEM y recoger los resultados en un array. Cuando el parámetro booleano es TRUE -valor por defecto- utilizará nombres cortos para los índices de los arrays. Si a ese parámetro le asignamos el valor FALSE (0) usaría nombres largos. La diferencia puedes verla en estos ejemplos. Estos primeros utilizan la opción FALSE
mientras que estos otros utilizan la opción TRUE. En ambos caso estamos visualizando copias de los tres tipos de certificados: nuestros certificados de prueba, un certificado de la FNMT y otro de DNIe.
Para que puedas visualizar estos certificados ejemplo –tienen carácter público y no pueden ser utilizados sin su clave privada– hemos guardado aquí una copia de ellos.
Cuando intentamos acceder, mediante el protocolo HTTPS a un directorio configurado como SSLVerifyClient require y, además se incluye la opción SSLOptions +ExportCertData los datos de los certificados de servidor y cliente son recogidos en dos variables superglobales. La variable $_SERVER['SSL_SERVER_CERT'] contendrá una cadena con el certificado del servidor en formato PEM mientras que $_SERVER['SSL_CLIENT_CERT'] tendrá idéntica información pero referente al certificado del cliente.
Este es el código fuente del script utilizado en los ejemplos anteriores.
Verificación de la validez de un DNIe
OpenSSL dispone de una utilidad que permite verificar la validez de un DNIe. Se trataría de ejecutar desde la línea de comando lo siguiente:
openssl ocsp -CAfile cert_raiz_dnie -issuer emisor -cert cliente -url direccion
cuyos parámetros son los siguientes:
– cert_raiz_dnie es la ruta completa y el nombre del fichero (en formato PEM) que contiene el certificado raíz del DNIe.
– emisor es la ruta completa y el nombre de un fichero que contiene los datos del emisor del certificado de DNIe. Se extrae de este documento.
– cliente es la ruta completa y el nombre de un fichero que contiene los datos del cliente extraidos del DNIe (se extrae de este documento.
– direccion es la dirección que permite hacer la comprobación. En el caso del DNIe sería http://ocsp.dnie.es
Este comando puede ser ejecutado desde PHP incluyéndolo en una llamada a la funcion shell_exec() que es el procedimiento que seguimos en el ejemplo que tienes a continuación.
Al ver el código fuente podrás observar que al script le hemos incluido una opción para simular la lectura de un DNIe sin necesidad de que configures tu servidor en modo seguro y, a la vez, para intentar ilustrar las posibilidades del DNIe y el certificado de la FNMT en el caso en que no dispongas de ellos o no te apetezca configurar tu servidor para trabajar en modo seguro.
Para utilizar este script con tu propio DNIe bastará con que lo copies al directorio restringido de la configuración que hemos propuesto para el servidor seguro (obviamente es imprescindible esa configuración) y que accedas a él a través de la dirección:https://localhost/dnie/test_dnie.php.
Si has hecho la verificación del DNIe del ejemplo anterior habrás podido ver que el certificado está revocado. Eso es cierto. El certificado que hemos utilizado corresponde a un DNIe que ya fué renovado y como consecuencia de esa renovación ha sido emitido un nuevo certificado con la consiguiente revocación del anterior.
¿Cómo utilizar el DNIe?
La utilización del DNIe electrónico requiere, tal como se explica en su página oficial, disponer de un lector de tarjetas inteligentes que cumpla el estándar ISO-7816. Existen distintas implementaciones, bien integrados en el teclado, bien externos (conectados vía USB) o bien a través de una interfaz PCMCIA el uso de un lector.
Además del dispositivo de hardware es necesario realizar algunas instalaciones de certificados y modificar algunas configuraciones de los navegadores. Este proceso puede hacerse basándose en la información de la web oficial del DNIe o recurriendo a algunas herramientas que permiten efectuar esa instalación y configuración de forma automática. Una de ellas, https://zonatic.usatudni.es nos permite descargar paquetes autoinstaladores tanto para las diferentes versiones de Windows como para Ubuntu.
Para este último caso, en enlace anterior aún no dispone en esta fecha (03.04.2012) de una versión que permita realizar la instalación sobre Ubuntu 12.04. Para quien necesite utilizar esta versión del sistema operativo hay una excelente página http://bitplanet.es/manuales/3-linux/ dónde se describe de forma minuciosa todo el proceso de instalación y configuración en este supuesto.
Warning: unlink(sabado.txt) [function.unlink]: Permission denied in /home/rinconas/public_html/php/ejemplo166.php on line 89