Foros del Web » Programando para Internet » PHP »

Certificado digital en PHP

Estas en el tema de Certificado digital en PHP en el foro de PHP en Foros del Web. Hola gente, necesitaria una ayudita para un temilla. Necesito hacer un sistema de validacion para un pagina web en la que estoy trabajando. Este consiste ...
  #1 (permalink)  
Antiguo 22/02/2009, 20:51
Avatar de futurosoft  
Fecha de Ingreso: diciembre-2008
Mensajes: 28
Antigüedad: 15 años, 4 meses
Puntos: 0
Certificado digital en PHP

Hola gente, necesitaria una ayudita para un temilla.

Necesito hacer un sistema de validacion para un pagina web en la que estoy trabajando. Este consiste en leer el certificado digital instalado en el navegador, una vez esto, se rellena de forma automatica los datos personales en el formulario y el usuario escribe una solicitud y la peticion se envia por correo electronico.

Alguna manera de hacerlo con php??

Gracias.
  #2 (permalink)  
Antiguo 14/03/2009, 15:50
 
Fecha de Ingreso: mayo-2004
Mensajes: 22
Antigüedad: 19 años, 11 meses
Puntos: 0
Respuesta: Certificado digital en PHP

Hola futurosoft:

¿Conseguiste hacerlo?. Yo estoy buscando exactamente lo mismo.

Gracias.

Saludos.
  #3 (permalink)  
Antiguo 14/03/2009, 16:00
(Desactivado)
 
Fecha de Ingreso: diciembre-2008
Mensajes: 421
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Certificado digital en PHP

Bueno existe un temas mas o menos que lo que quieren ojo no es precisamente eso pero podrian empezar por ahi
http://www.forosdelweb.com/f18/factu...mexico-638882/

Ojala les sirva
  #4 (permalink)  
Antiguo 14/03/2009, 17:24
 
Fecha de Ingreso: mayo-2004
Mensajes: 22
Antigüedad: 19 años, 11 meses
Puntos: 0
Respuesta: Certificado digital en PHP

Gracias majony. Por más que busco no encuentro la solución. Casi todos hablan de consultar un fichero .pem, p12, etc..., pero no es eso. Se trata de consultar los datos de un certificado que ya está instalado en el navegador, ya sea Internet Explorer, Mozilla Firefox u otro, para así contrastar algún campo del certificado con el mismo campo que tenga al macenado en la base de datos.

Gracias.

Saludos.
  #5 (permalink)  
Antiguo 15/03/2009, 22:48
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Certificado digital en PHP

No es posible hacer eso, ya que esta en el navegador y PHP no puede leer esa informacion.

Saludos.
  #6 (permalink)  
Antiguo 16/03/2009, 02:21
 
Fecha de Ingreso: mayo-2005
Mensajes: 188
Antigüedad: 18 años, 11 meses
Puntos: 6
Cita:
Iniciado por GatorV Ver Mensaje
No es posible hacer eso, ya que esta en el navegador y PHP no puede leer esa informacion.

Saludos.
Sí, y no. Me explico: alguna vez he jugado con certificados digitales en java, y sí se puede. Lo que pasa es que la aplicación web no accede directamente al certificado instalado en el navegador. Como bien dices, eso no es posible. La solución (en Java) pasa por la configuración del servidor web. En este caso, se activa la autenticación por certificado digital. De esta manera, el navegador envía al servidor web el certificado. A partir de ahí, el servidor le envía a la aplicación el certificado de usuario a través de atributos en la petición (objeto request).

Pero claro, eso es java. En PHP ni idea... Y a mí también me gustaría saberlo ;) ¿Quizá a través de alguna directiva de configuración del servidor web???

Saludos.

Bueno, pues yendo un poco más allá... Me he mirado la configuración del módulo SSL de Apache (http://httpd.apache.org/docs/2.2/mod/mod_ssl.html).

Este módulo permite la autenticación del cliente con certificado digital. Si la autenticación es correcta, el módulo deja un conjunto de variables de entorno en el servidor, de tal manera que desde PHP se podrían recoger desde la variable global $_SERVER[].

La configuración SSL depende del servidor web, no tanto de PHP. El primer requerimiento es que la aplicación PHP corra sobre un servidor web con soporte SSL. Será el servidor web el encargado de la parte SSL dejando la información necearia a la aplicación a través de variables de entorno.

Última edición por GatorV; 16/03/2009 a las 08:56
  #7 (permalink)  
Antiguo 16/03/2009, 03:31
 
Fecha de Ingreso: marzo-2008
Ubicación: En casa
Mensajes: 252
Antigüedad: 16 años, 1 mes
Puntos: 4
Respuesta: Certificado digital en PHP

No quiero criticar la idea ni al autor, pero quisiera que conociesen los riesgos de hacer esto.

La informacion puede ser facilmente falsificada ya que seguramente el certificado haya sido emitido por el servidor o otra fuente, y no sea un SSL de pago (de esos de los que firefox se fia directamente), por lo que aunque la idea es atractiva, desde el punto de vista de seguridad es un fiasco.

Aun asi como apyo de seguridad integrado no es nada mala idea.
__________________
Ayudar cuesta mucho, dar las gracias no tanto, tenlo en cuenta siempre.
  #8 (permalink)  
Antiguo 16/03/2009, 10:20
 
Fecha de Ingreso: mayo-2004
Mensajes: 22
Antigüedad: 19 años, 11 meses
Puntos: 0
Respuesta: Certificado digital en PHP

Hola:

Se trata de un certificado emitido por la Fabrica Nacional de Moneda y Timbre. No es una idea mia. Se trata de un requerimiento del sistema que se está montando.

Si el certificado es emitido por la FNMT, ¿como se puede falsificar la información si va por https?. Además, en un campo de una tabla se podría guardar la clave pública, que para eso es pública. Leyendo el certificado, podríamos determinar si es o no lo persona con permiso de acceso.

Esta claro que el servidor debe tener soporte ssl. He leido que con php y sus funciones de openssl se puede hacer.

Sigo investigando y si doy con una posible solución, os informo.

Gracias.

Saludos.
  #9 (permalink)  
Antiguo 16/03/2009, 19:07
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
Respuesta: Certificado digital en PHP

netempleo:

Si te logro entender lo que quieres es que los usuarios ingresen via https, y se utilice el certificado para autenticar etc etc..
Generalmente la configuracion es mas del servidor que de php
y un ejemplo podria ilustrar como se hace ->

Cita:
Code:
NameVirtualHost *:443

<VirtualHost *:443>
DocumentRoot /casa/miusuario/www/https

SSLEngine on
SSLCertificateFile /etc/httpd/conf/ssl.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
</VirtualHost>

<VirtualHost *:443>
ServerName misitodeprueba
DocumentRoot /casa/miusuario/www/misitioprueba/https

SSLEngine on
SSLCertificateFile /etc/httpd/conf/ssl.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
</VirtualHost>

NameVirtualHost *:80

<VirtualHost *:80>
DocumentRoot /casa/miusuario/www
</VirtualHost>

<VirtualHost *:80>
ServerName misitioprueba
DocumentRoot /casa/miusuario/www/misitioprueba
</VirtualHost>
Cuando el usuario entra ya se activa el ssl y el certificado
ya que debe estar ubicado un una ruta especifica.

Saludos
Y espero te ayude
Franco
  #10 (permalink)  
Antiguo 17/03/2009, 01:29
 
Fecha de Ingreso: mayo-2004
Mensajes: 22
Antigüedad: 19 años, 11 meses
Puntos: 0
Respuesta: Certificado digital en PHP

Hola franco190453:

Muchas gracias por tu ayuda. Quizás no me esté explicando del todo o me faltan algunos conceptos fundamentales, que todo puede ser.

El tema de la configuración de Apache está resuelto, ya que la Web va en un hosting con soporte ssl, donde tenemos un certificado instalado.

Cuando un usuario quiera acceder a la zona privada, deberá hacerlo con su certificado digital. Este certificado son de los que emite la FNMT y sirve para autenticarte en algunas Webs, como por ejemplo, la de Hacienda para ver nuestro borrador de la declaración o en la Web del servicio de salud correspondiente a nuestra comunidad autónoma para pedir cita en el médico.

Sólo existe un problema adicional a lo que os cuento y es que, en estas Webs que os comento, todo aquel que tenga certificado digital puede acceder. En el sistema que estoy implementando, sólo aquellos usuarios con certificado digital y que un administrador del sistema le haya dado de alta, podrá acceder a la zona privada. Por lo tanto, interpreto que en mi base de datos tendré que guardar algún dato para, posteriormente, acceder al certificado personal del usuario y verificar si es o no un usuario del sistema con permiso de acceso.

Gracias.

Saludos.
  #11 (permalink)  
Antiguo 17/03/2009, 01:50
 
Fecha de Ingreso: mayo-2005
Mensajes: 188
Antigüedad: 18 años, 11 meses
Puntos: 6
Respuesta: Certificado digital en PHP

En ese caso, y si te he entendido bien, bastaría con tener en tu sistema una copia de los certificados de los usuarios con acceso, o quizá baste sólamente con el DN de los certificados.

Una vez el usuario ha accedido al sistema con su certificado, recuperas los campos del certificado a partir de variables de entorno del servidor, y los comparas con los que tienes en tu base de datos. ¿No?

--
Por cierto, para comprobar la configuración del servidor (en caso de Apache, si no lo es avisa!!!!) en este FAQ explican las directivas a activar para que se aplique la atenticación de cliente: http://httpd.apache.org/docs/2.2/ssl...#accesscontrol

Última edición por juanfuentes; 17/03/2009 a las 02:03 Razón: Añadida referencia a FAQ de Apache
  #12 (permalink)  
Antiguo 17/03/2009, 03:11
 
Fecha de Ingreso: mayo-2004
Mensajes: 22
Antigüedad: 19 años, 11 meses
Puntos: 0
Respuesta: Certificado digital en PHP

Hola juanfuentes:

Muchas gracias por tu ayuda. Voy a probar lo que me comentas. Ya os cuento.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:07.