php - válido - Mi script de PayPal dejó de verificar el certificado SSL
err_bad_ssl_client_auth_cert solucion (1)
El año pasado, salió PCI-DSS 3.1 y hubo un cambio importante para todas las personas que procesan tarjetas de crédito. Específicamente, había un mandato de que todo el procesamiento debía hacerse solo en TLS 1.1 o posterior. La fecha original de caducidad fue el 30 de junio de 2016, pero se pospuso hasta el 30 de junio de 2018.
El Consejo de Estándares de Seguridad de la Industria de Tarjetas de Pago (PCI SSC) extiende la fecha de finalización de la migración al 30 de junio de 2018 para la transición de SSL y TLS 1.0 a una versión segura de TLS (actualmente v1.1 o superior).
Ahora, aunque este alivio le da a usted, el programador, algo de espacio para respirar con respecto a su interfaz, aún significa que pasar a TLS 1.1+ no es opcional (de hecho, lo haría antes si fuera usted) y que algunos intermedios el procesamiento de la tarjeta comenzará a moverse antes que eso. PayPal, como resultado, es uno de los que se mueve en lo que respecta a sus sitios web
Actualización de TLS 1.2
El protocolo más seguro para compartir información en la web hoy en día es Transport Layer Security (TLS) versión 1.2. PayPal está habilitando soporte para TLS 1.2 para todas las conexiones seguras y en 2016 comenzará a requerir su uso. Deberá verificar que su entorno sea compatible con TLS 1.2 y, si es necesario, realizar las actualizaciones apropiadas. PayPal está actualizando sus servicios para requerir TLS v1.2 para todas las conexiones HTTPS el 17 de junio de 2016. Después de esa fecha, se rechazarán todas las conexiones API TLS v1.0 y TLS v1.1.
Ahora, en teoría, su antiguo script (siempre que no esté almacenando la clave pública de PayPal) debería funcionar bien, pero Sandbox (que ya se ha movido a esto) ya está comenzando a fallar. Lo que he encontrado es que, por diversas razones, algunas capas de comunicación (notablemente CURL en PHP, una forma muy común de hablar con PayPal) ya no pueden negociar correctamente con PayPal. Por lo tanto, obtienes el error críptico
Error de conexión SSL
Gracias CURL. Eso fue útil ... (no)
Entonces, ¿cómo trabajamos alrededor de esto? Bueno, si le decimos a CURL que solo use TLS 1.2, sus llamadas a PayPal deberían comenzar a funcionar nuevamente sin problemas. Si usa PHP y CURL, puede hacerlo agregando esto como (donde $ch
es su controlador CURL)
curl_setopt($ch, CURLOPT_SSLVERSION, 6); // Force TLS 1.2
Este cambio es perfectamente seguro de usar tanto con Sandbox como con llamadas en vivo a PayPal.
Así que mi secuencia de comandos (oyentes de IPN, llamadas a API, etc.) funcionaba bien, pero de repente comenzó a arrojar un error sobre la imposibilidad de verificar el certificado SSL. Este es mi error (se muestra PHP CURL)
Error de conexión SSL
¿Por qué dejó de funcionar?