Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/04/2016, 01:55
Hanzo_lx
 
Fecha de Ingreso: septiembre-2009
Mensajes: 84
Antigüedad: 14 años, 7 meses
Puntos: 2
LEER-VALIDAR Certificados digitales personales con PHP

Hola.

Estoy intentando validar una web con certificados digitales personales, en concreto de la FNMT.

El tema para mi es algo nuevo y sinceramente es bastante informacion por eso recurro a vosotros a ver si podeis echarme una mano

Necesito que mediante los certificados digitales que el usuario instala en el navegador este valide contra una base de datos mediante PHP.

He conseguido leer la informacion del certificado que esta en la misma carpeta o subiendoselo mediante un input con las funciones de las que dispone php de openssl en modo de navegacion no https. Asi:

Código:
<?php 
if (getenv('HTTPS')=='on'){ 
   $cert=$_SERVER['SSL_CLIENT_CERT']; 
 }else{ 
   	$fname = "nombreCert.p12";
 	$f = fopen($fname, "r"); 
   
 $cert = fread($f, filesize($fname)); 
 fclose($f); 

 } 

 $datos = array();
 $pass = "pass";

 openssl_pkcs12_read($cert, $datos, $pass);
 $datos = openssl_x509_parse($datos['cert'],0);
 
 print_r($datos);
?>
Ahora necesito leer los que estan en el navegador instalados por lo que googleando he encontrado la forma de configurando Apache para que utilice SSL y al entrar en la web este requiera un certificado de cliente:

Código:
SSLVerifyClient require
He probado todo esto en un server CENTOS que tengo en una maquina virtual con apache-OpenSSL-mod_ssl.
Una vez entro en el php con el codigo que os he puesto arriba me solicita el certificado pero cuando lo selecciono me salta un error de

"Conexion segura fallida"....... La otra parte no reconoce o confia en....


Partiendo de mi desconocimiento la sensación es que estos manuales están hechos para validar certificados autofirmados con el mismo certificado de servidor creado por este.

Si alguien pudiera orientarme un poco sobre como validar un certificado instalado en el navegador mediante php segun su tipo le estaria muy agradecido. Lo mas importante en un principio que necesito es poder leer los datos de este certificado. Si luego puedo validarlo ya es un extra ;)

Seria algo asi como:

-Entrar a un .php
-Solicitar certificados de cliente instalados
-leer los datos de este
-Validarlos o no (por ejemplo los de la FNMT)

Muchas gracias