Como saber si la contraseña corresponde al archivo .KEY

La libreria OpenSSL es la mas usada para generar el sello digital, independientemente del lenguaje aqui encontraras informacion de como usar la libreria
[[ FORO CERRADO DEBIDO A QUE YA LA INFORMACION YA NO ES VIGENTE ]]
dekpitado
Mensajes: 20
Registrado: Jue Jul 05, 2012 6:57 pm

Como saber si la contraseña corresponde al archivo .KEY

Mensajepor dekpitado » Jue Jul 05, 2012 7:02 pm

Mi duda es como saber si la contraseña que el usuario proporciona en el sistema corresponde al archivo .KEY que esta subiendo ?
Existe algun comando en openssl que proporcione esto ?? Estoy desarrollando en PHP. Pregunto esto porque en mi codigo al querer pasar el .KEY a .PEM( pkcs8 ) con la funcion exec() de php con la contraseña invalida, el servidor apache se me cuelga y la unica manera de que vuelva a responder a cualquier petición es reiniciandolo :o , es por eso que quiero validar en un inicio mediante ssl( si existe algo ) para devolver el error adecuado al usuario.

Desde ya gracias !!!!

dekpitado
Mensajes: 20
Registrado: Jue Jul 05, 2012 6:57 pm

Re: Como saber si la contraseña corresponde al archivo .KEY

Mensajepor dekpitado » Vie Jul 06, 2012 6:49 pm

Buenas tardes.. Bueno me contesto solo jejeje

La manera en que compruebo que la contraseña que se esta ingresando es la del archivo .KEY, es comprobando si se puede convertir el archivo .KEY a .PEM mediante la función exec de php, esta función recibe 3 parametros:
1o : Es el comando a ejecutar con openssl
2o : Un arreglo que cacha la salida de texto como resultado de la ejecución( si no devuelve nada el array queda vacio )
3o : Recoge el estatus de la ejecución del comando, openssl devuelve cero si se ejecuta y 1 si hay un error

Hay que tener cuidado de tener el dir de ejecución apuntando a la carpeta donde recide el openssl y las dll's( windows ), ya que en mi caso me daba error al poner el path relativo del exe del openssl en el 1er parametro( ej. exec( ../path openssl/pkcs8 ..., $arr, $estatus ) ), para moverte de dir los hacemos con chdir().

Esta es la 1a validación que se debe de hacer ya que sin la contraseña valida, no podemos comparar modulos para saber si es el par de certificados son correctos o para tratar de firmar la cadena ya que se utiliza el .KEY.PEM.

Como nota curiosa, los pasos anteriores hace dias que los habia realizado pero aun asi mi apache se colgaba y tenia que reiniciar, incluso estava viendo la manera de matar los procesos para ambiente linux ya que va ser el SO de producción, pero hayer intente de nuevo y anda bien.... :x ..

Ahorita ya me encuentro timbrando con FEL y haciendo pruebas con sus métodos, asi que, si alguien tiene alguna duda utilizando PHP, ps por aqui andaremos !!!!!!

xml??
Mensajes: 82
Registrado: Mar Jun 14, 2011 3:50 am

Re: Como saber si la contraseña corresponde al archivo .KEY

Mensajepor xml?? » Sab Jul 07, 2012 6:55 pm

No necesitas usar exec, php tiene funciones de openssl.

Casi cualquier función con que usa la llave privada, requiere la contraseña, si funciona esta correcta

dekpitado
Mensajes: 20
Registrado: Jue Jul 05, 2012 6:57 pm

Re: Como saber si la contraseña corresponde al archivo .KEY

Mensajepor dekpitado » Mié Jul 11, 2012 7:08 pm

Hasta donde e leido, ninguna de las funciones de la API de openSSL de php puede convertir un archivo .key que biene en binario a .pem, que es el unico proceso que hago con el exe del openSSL, una vez convertido a .pem hago uso de la API de php para hacer el firmado y validación de firmado de la cadena, ya que estos metodos requieren de este archivo( pem ) para ejecutarse correctamente. Pero si hay una manera de hacer ese paso de .key a .pem desde la api con gusto cambio mi codigo :D

xml??
Mensajes: 82
Registrado: Mar Jun 14, 2011 3:50 am

Re: Como saber si la contraseña corresponde al archivo .KEY

Mensajepor xml?? » Mié Jul 11, 2012 9:19 pm

Que tal

Código: Seleccionar todo

if (openssl_verify($cadena, $crypttext, $pkey)) {
      echo  "El firmado es correcto<br />";
   } else {
      echo $cadena."<br />";
      die("<br />Error en el firmado!!!<br />");
   }   


o codificar un texto con la llave publica y decodificarla con la llave privada?

wolten
Mensajes: 12
Registrado: Dom Dic 26, 2010 10:48 am

Re: Como saber si la contraseña corresponde al archivo .KEY

Mensajepor wolten » Mié Nov 07, 2012 12:03 am

Hola que tal tienes algun ejemplo en PHP para consumir el timbrado de FEL?? estaria cool te podria pasar los ejemplos para timbrar con ATEB, buzone, ECODEX en PHP :D

c_arve
Mensajes: 14
Registrado: Mar Ago 27, 2013 4:01 pm

Re: Como saber si la contraseña corresponde al archivo .KEY

Mensajepor c_arve » Mar Oct 01, 2013 1:22 pm

Ahorita ya me encuentro timbrando con FEL y haciendo pruebas con sus métodos, asi que, si alguien tiene alguna duda utilizando PHP, ps por aqui andaremos !!!!!!


que tal dekpitado actualmente estoy haciendo pruebas con el pac FEL y me esta costando bastante trabajo, su servicio de soporte no ayuda mucho que digamos.
ya tengo mi xml y mi sello sin errores, pero al intentar hacer el timbrado de prueba, me falta ver como llamarlo para que me regrese los datos de manera correcta
al intentar hacer el timbrado me regresa esto:

Código: Seleccionar todo

stdClass Object ( [TimbrarCFDPruebaResult] => stdClass Object ( [string] => Array ( [0] => [1] => [2] => [3] => [4] => not(ancestor-or-self::*[local-name()='Signature']) iAnwDP00FBSZlPPVc0IdhsTfSng4qS46ZZg/dqZN0PbgZ7tYcsgCnle+r9Kz+kCHjYXj2Un6q5Gg6OuoxnrEbg== 90elKiGzpxMHUiG9Dgs7m2Q15+wmXfgqRco18Xdv5Thpe4JKm9NhKy5Chvggt9wAqgehuEhJm5vXB0W1RjvpbA== 00001088888800000093 yxMvUucuS+s3aeWTFZvJrrFWIdes7kIDJmO7DA5DP+ZTapofNt37fgeIHlTUdAVvd/fDKhfiwNSh+vbrNbD58X3UEdQor3ngb6zpjrDjgYsedckPLv6fro4DO0NXLCdALFqhN8ARyX77kYBnvIj1fOSVp401Vc3urLUtiEm16Kle3tOyWhfjgFzdK3oAIXF8oeei/GburWbJnpP+NeGaHVE5bkxLCBp5757nKVonXwzpfpEGuBp204NGkI2/jyA2EH8wyRN4yUvzjT7IJYrHng23klRDlJoRYwa98QQPdQSTpcrlNu8nLhpQdI/zMTLoNF2NiBCkQNuAMacKhnvlVw== AQAB [5] => ) ) )


el codigo que estoy utilizando es el siguiente:

Código: Seleccionar todo

 <?php
 error_reporting(0);
/* Ruta del servicio de integracion*/
$ws = "https://www.factureyapac.com/WS-TFD-FY/WS-TFD-FY.asmx?WSDL";
$response = '';
/* Ruta del comprobante a timbrar*/
$rutaArchivo = 'comprobanteTimbrado2.xml';
 
$base64Comprobante = file_get_contents($rutaArchivo);
//$base64Comprobante = base64_encode($base64Comprobante);

try
{
$params = array();
/*Nombre del usuario tritondx7@hotmail.com*/
$params['usuario'] = 'AITF560202xxx';
$params['password'] = 'TJAVFR65xxx';
$params['cadena'] = $base64Comprobante;

$client = new SoapClient($ws,$params);
$respuesta = $client->__soapCall('TimbrarCFDPrueba', array('parameters' => $params));
}
catch (SoapFault $fault)
{
echo "SOAPFault: ".$fault->faultcode."-".$fault->faultstring."\n";
}
 
//print_r($respuesta);

/*Obtenemos resultado del response*/
$xmltimbrado0 = $respuesta->TimbrarCFDPruebaResult->anyType[0];
$xmlTimbrado1 = $respuesta->TimbrarCFDPruebaResult->anyType[1];
$xmlTimbrado2 = $respuesta->TimbrarCFDPruebaResult->anyType[2];
$xmlTimbrado3 = $respuesta->TimbrarCFDPruebaResult->anyType[3];
$xmlTimbrado4 = $respuesta->TimbrarCFDPruebaResult->anyType[4];
//$XMLS=$respuesta["TimbrarCFDPruebaResult"]["string"][3];

print_r ("posicion 0:".$xmltimbrado0);
echo "<br>";
print_r ("posicion 1:".$xmlTimbrado1);
echo "<br>";
print_r ("posicion 2:".$xmlTimbrado2);
echo "<br>";
print_r ("posicion 3:".$xmlTimbrado3);
echo "<br>";
print_r ("posicion 4:".$xmlTimbrado4);
echo "<br>";


if($xmlTimbrado3 != '')
{

file_put_contents('comprobanterespuesta.xml', $xmlTimbrado);


print_r("Timbrado exitoso");

}
else
{
print_r($respuesta);
}
?>


tal vez me podrias orientar para ver que estoy haciendo mal en el codigo.

Saludos...


Volver a “OpenSSL en general (cualquier lenguaje)”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados