Pregunta

Recientemente he decidido añadir la opción de pago BankLink de mi tienda php y después de leer las especificaciones de aplicación todo parece okey, pero el punto 1 de la misma. Todo clave pública (certificados) de cambio están en formato X509. Ahora lo que hace que la última media y la forma en que es diferente de la contraseña habitual protegida archivo .pem? También con contraseña habitual protegida .pem archivo que he no puedo utilizar la función de php como openssl_verify() firmado por la función openssl_sign().

¿Puedo obtener algunos consejos aquí Por favor, ya que el banco que ofrece este método de pago tiene muy poca información sobre esto y estoy totalmente Novato a esto.

Así que la rutina que tengo que hacer aquí es generar request.pem para ellos y enviarlo a ellos. Después de que se firmen o lo que sea lo sé y yo debería ser capaz de utilizarlo en mi solicitud.

Por favor, dime si mi información no es suficiente ya que como he dicho que no sé mucho cuando tenga que hacer el o los certificados OpenSSL.

¿Fue útil?

Solución

archivo PEM contiene cifrado y codificado en base 64 el valor de clave de certificado 'en bruto' / privado, por lo que el trabajo con funciones PEM también debe trabajar con certificados primas. OpenSSL debe ser capaz de convertir de un formato a otro.

Otros consejos

Se tiene que utilizar el concepto curl.

curl_setopt($ch, CURLOPT_SSLCERT,'CA.pem');

Sinceramente, las capacidades de OpenSSL en PHP son abismales. Su mejor apuesta es ir a por un paquete impresionante como phpseclib .

Hace mucho tiempo que estaba haciendo algo similar. La diferencia es que sólo me dio el archivo PEM, y lo utilizó para conectarse a su servidor.

A continuación escribí mi guiessing para usted. :)

  1. Generar myreq.pem utilizando la herramienta openssl.
  2. Enviar myreq.pem a ellos y obtener ca.pem certificado firmado.
  3. Uso ca.pem en PHP, como a continuación.

$context = stream_context_create();
stream_context_set_option($context, 'ssl', 'verify_peer', false); //or can be true
stream_context_set_option($context, 'ssl', 'cafile', "ca.pem");
stream_context_set_option($context, 'ssl', 'local_cert', "ca.pem");
stream_context_set_option($context, 'ssl', 'passphrase', 'your pem file password');
//instead tls can be ssl, sslv3, sslv2 depending requirements, 10 is timeout
$sock = stream_socket_client("tls://host:port", $errno, $errstr, 10, STREAM_CLIENT_CONNECT, $context); 
fwrite($sock, "Hi server\r\n");
$strResponse;
while(!feof($sock)) { $strResponse = $strResponse . fgets($sock, 1024); }
fclose($s);
echo $strResponse;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top