Foros del Web » Programando para Internet » PHP »

SSL sobre TCP: Pasar un certificado PEM

Estas en el tema de SSL sobre TCP: Pasar un certificado PEM en el foro de PHP en Foros del Web. Que tal, Ojalá me pudieran ayudar o al menos orientar Necesito hacer una conexión a un servidor vía TCP/SSL a un servidor EPP, validando mi ...
  #1 (permalink)  
Antiguo 30/06/2008, 13:35
Avatar de MexicanDeveloper  
Fecha de Ingreso: junio-2006
Mensajes: 17
Antigüedad: 14 años
Puntos: 0
Pregunta SSL sobre TCP: Pasar un certificado PEM

Que tal,

Ojalá me pudieran ayudar o al menos orientar Necesito hacer una conexión a un servidor vía TCP/SSL a un servidor EPP, validando mi identidad con un certificado que me firmó la entidad a la que me estoy conectando.

Descargué una aplicación que ya hace la parte del EPP, pero no así la de la validación SSL

Esto se hacia, para PHP con fsokopen y un contexto, pero para PHP 5, los contextos ya no son válidos. Ahora se hace con stream_socket_client.

Ya poseo:
* Un CA.pem un cert.pem y un key.pem concatenados como indica php.net
* Mi IP se supone que ya esta validada en el firewall de la entidad receptora.
* SSL está habilitado en el PHP.ini
* Ya probé subiendo el timeout

El código es muy sencillo y no debería haber mayor problema:
Código PHP:
    $servidor "una ip";
    
$puerto un puerto;
    
$usuario "un usuario";
    
$pass "una clave";    

    
$timeout 60;
    
    
// Concatenar el certificado con la llave privada antes de enviarlo
    
$cert '/home/admin/domains/dominio.com/certchain.pem';


    
$context stream_context_create(array('ssl'=>array('local_cert'=> $cert)));

    
$where 'ssl://'.$servidor.':'.$puerto;
    
$fp stream_socket_client($where$errno$errstr$timeout,STREAM_CLIENT_CONNECT,$context);
    if(
$fp){
        echo 
"Si jaló";
        
    } else {
       echo 
"ERROR: $errno - $errstr<br />\n";
    } 
Pero estoy obteniendo este error:

Warning: stream_socket_client(): unable to connect to ssl://(IP):(PUERTO) (Connection timed out) in ....

¿Que puede ser? ¿Donde puedo obtener información de esto? Agradeceré infinitamente su apoyo

Última edición por MexicanDeveloper; 01/07/2008 a las 12:42 Razón: Hace mas legible el código. Y evito mostrar información no pública
  #2 (permalink)  
Antiguo 30/06/2008, 22:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 14 años, 1 mes
Puntos: 2135
Respuesta: SSL sobre TCP: Pasar un certificado PEM

Haz probado cambiar en lugar de usar ssl usar https?

Saludos.
  #3 (permalink)  
Antiguo 01/07/2008, 10:46
Avatar de MexicanDeveloper  
Fecha de Ingreso: junio-2006
Mensajes: 17
Antigüedad: 14 años
Puntos: 0
Respuesta: SSL sobre TCP: Pasar un certificado PEM

Bueno, según el RFC del tal EPP, éste debe correr bajo TCP/SSL, pero aun así lo probé, y lo que obtengo (cosa curiosa) es:

ERROR: 152927512 - Unable to find the socket transport "https" - did you forget to enable it when you configured PHP?

Y digo cosa curiosa por que tengo habilitado el ssl (openssl) y los sockets:

'./configure' '--with-apxs' '--with-curl' '--with-curl-dir=/usr/local/lib' '--with-gd' '--with-gd-dir=/usr/local' '--with-gettext' '--with-jpeg-dir=/usr/local/lib' '--with-kerberos' '--with-mcrypt' '--with-mhash' '--with-mysql=/usr' '--with-pear' '--with-png-dir=/usr/local/lib' '--with-xml' '--with-zlib' '--with-zlib-dir=/usr/local/lib' '--with-zip' '--with-openssl' '--enable-bcmath' '--enable-calendar' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--enable-track-vars' '--enable-mbstring' '--enable-memory-limit'

Además de estar habilitado el allow_url_fopen

allow_call_time_pass_reference Off Off
allow_url_fopen On On
allow_url_include Off Off
always_populate_raw_post_data Off Off

¿Alguna otra idea de lo que pudiera ser?
  #4 (permalink)  
Antiguo 01/07/2008, 11:49
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 14 años, 1 mes
Puntos: 2135
Respuesta: SSL sobre TCP: Pasar un certificado PEM

Mmm muy raro, aunque si veo que tienes openssl, y viendo el warning si esta tratando de conectarse pero no encuentra el puerto remoto, haz tratado de hacer un ping normal desde la consola al servidor / puerto?

Saludos.
  #5 (permalink)  
Antiguo 01/07/2008, 12:11
Avatar de MexicanDeveloper  
Fecha de Ingreso: junio-2006
Mensajes: 17
Antigüedad: 14 años
Puntos: 0
De acuerdo Respuesta: SSL sobre TCP: Pasar un certificado PEM

Muchas gracias por seguir generando ideas GatorV.

No sé si se pueda hacer un ping a un puerto en específico, a mi me marcaba error:

ping: unknown host (IP):(PUERTO)

Pero el telnet si lo hace:

Trying (IP)...
Connected to (NOMBRE DEL HOST) (IP).


Lo que comprueba que si me están dando entrada en su firewall. Me estoy inclinando a pensar que es un error en el código.... pero entonces ¿no es correcta mi forma de hacerlo? ¿Se puede hacer de otra forma?
  #6 (permalink)  
Antiguo 01/07/2008, 12:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 14 años, 1 mes
Puntos: 2135
Respuesta: SSL sobre TCP: Pasar un certificado PEM

Esque el problema te lo dice PHP:
Código:
Warning: stream_socket_client(): unable to connect to ssl://(IP):(PUERTO) (Connection timed out) in ....
Quiere decir que no se pudo conectar, ya que fue un timeout, es decir que no puede realizar la conexión, puede ser que si el context este equivocado, pero no conozco más allá de lo que te indica el manual.

Saludos.
  #7 (permalink)  
Antiguo 01/07/2008, 12:57
Avatar de MexicanDeveloper  
Fecha de Ingreso: junio-2006
Mensajes: 17
Antigüedad: 14 años
Puntos: 0
Exclamación Respuesta: SSL sobre TCP: Pasar un certificado PEM

He encontrado un detalle:

Desde un servidor que se supone que no esta validado en el firewall si hace el telnet:
Código:
[[email protected]]# telnet ip.del.otro.servidor
Trying ip.del.otro.servidor...
Connected to host.name.del.otro.servidor (ip.del.otro.servidor).
Pero desde el que se supone que si lo está no lo hace
Código:
[[email protected]]# telnet ip.del.otro.servidor
Trying ip.del.otro.servidor...
telnet: connect to address ip.del.otro.servidor: Connection timed out
telnet: Unable to connect to remote host: Connection timed out
Creo que va por allí. Voy a consultarlo con la entidad emisora y actualizo el POST para futuras referencias
  #8 (permalink)  
Antiguo 01/07/2008, 14:34
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 14 años, 1 mes
Puntos: 2135
Respuesta: SSL sobre TCP: Pasar un certificado PEM

Mmmm o sea que estas probando desde dos servidores? En ese caso creo ya encontraste el problema y es el firewall que no esta permitiendo la conexión.

Saludos.
  #9 (permalink)  
Antiguo 10/07/2008, 13:44
Avatar de MexicanDeveloper  
Fecha de Ingreso: junio-2006
Mensajes: 17
Antigüedad: 14 años
Puntos: 0
Respuesta: SSL sobre TCP: Pasar un certificado PEM

Bueno, pues está de mas la respuesta, pero sólo para dar por terminado este tema y para que quede claro:

Así es, eran los puertos, a pesar de que ya me habían confirmado que estaban abiertos... no era así...

Saludos y gracias!!
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 07:34.