El certificado SSL para el host no se pudo verificar

4

Recibo este error en un archivo de registro creado por WooCommerce

"El certificado SSL para el host no se pudo verificar".

El archivo de WordPress /wp-includes/class-http.php

genera el error

enlace

He intentado configurar lo siguiente en mi archivo de funciones para deshabilitar la verificación SSL, pero todavía estoy recibiendo el error

add_filter( 'https_ssl_verify', '__return_false' );
add_filter( 'https_local_ssl_verify', '__return_false' );

En la línea 834 de class-http.php que probé cambiando esta línea

$connect_host = $secure_transport ? 'ssl://' . $connect_host : 'tcp://' . $connect_host;

A

$connect_host = $secure_transport ? 'sslv3://' . $connect_host : 'tcp://' . $connect_host;

El cambio es sslv3

Necesito esto para conectarme a authorize.net. ¿Hay un filtro que pueda usar, para anular el método en la clase, si es así, cuál? Sé lo suficiente como para no modificar el código del núcleo, esto fue solo para pruebas.

Gracias

    
pregunta Anagio 04.06.2014 - 17:43

1 respuesta

1

No recomendaría deshabilitar la verificación de SSL, lo que hace que su sistema sea vulnerable a posibles ataques en el medio. como se explica en esta publicación SO . Además, su uso de sslv3 es muy probable que cause este problema ahora ESPECIFICAMENTE porque Authorize.net lo identificó como vulnerable al compromiso de POODLE .

Desde que sucedió eso, muchos proveedores eliminaron los paquetes de certificados CA de autorize.net más antiguos de sus paquetes de OpenSSL mediante actualizaciones.

La causa raíz de su problema parece ser que su aplicación no puede encontrar dónde encontrar el paquete actualizado de certificados de CA raíz y, según el hilo anterior, Authorize.net ha desaprobado los originales:

Según la documentación de openssl en el parámetro cainfo del Manual PHP :

  

Al llamar a una función que verificará una firma / certificado, el   El parámetro cainfo es una matriz que contiene nombres de archivos y directorios que   Especifique las ubicaciones de los archivos CA de confianza. Si un directorio es   especificado, entonces debe ser un directorio hash correctamente formado como el   El comando openssl usaría.

Eso sugiere que puedes descargar un paquete actualizado de certificados de CA (o simplemente obtener el específico que necesitas para conectarte a authorize.net).

Authorize.net proyecto github para su php-sdk incluye una colección de certificados actualizada que debería resolver el problema que está Ver si utiliza el paquete recientemente actualizado (hace 4 días) .

No está claro en los ejemplos de código si ya está utilizando su SDK. Si no es así, debería poder simplemente descargar ese paquete y hacer referencia a la ruta del paquete actualizado según los ejemplos ampliados usando el cainfo parámetro en cualquier función que use cuando vuelva a habilitar la verificación.

Si es así, es posible que desee actualizar su composer.json para obtener la última versión del SDK.

    
respondido por el Bryan 'BJ' Hoffpauir Jr. 12.05.2015 - 08:40

Lea otras preguntas en las etiquetas