Let’s Encrypt ha llegado para quedarse. Ahora disponemos de certificados SSL totalmente gratuitos, y esto hará que nuestras webs sean más seguras y transmitan más confianza.
El problema viene al instalar un certificado Let’s Encrypt en una tienda prestashop que tenga el TPV de Redsys, y es que Redsys no soporta el protocolo SNI, es decir, únicamente funciona con tiendas online con IP dedicada. Ahora bien, podemos modificar el módulo de redsys para engañar temporalmente al servidor, y devolver la respuesta de compra con un «http» en vez de un «https».
Lo único que tenemos que hacer es modificar el archivo «/modules/redsys/redsys.php» y alrededor de la línea 336 (versión 3.0 del módulo oficial) encontraremos las siguientes líneas:
//URL de Respuesta Online if (empty($_SERVER['HTTPS'])) { $protocolo = 'http://'; $urltienda = $protocolo.$_SERVER['HTTP_HOST'].__PS_BASE_URI__.'modules/redsys/validation.php'; } else { $protocolo = 'https://'; $urltienda = $protocolo.$_SERVER['HTTP_HOST'].__PS_BASE_URI__.'modules/redsys/validation.php'; }
Lo único que habría que hacer es modificar la línea:
$protocolo = 'https://';
Por:
$protocolo = 'http://'; //antes https://
Hola,
porqué esta solución ¿solo lo engaña solo temporalmente?,
¿posteriormente vuelve a surgir el problema? y si es así,
¿Cuanto tarda en aparecer nuevamente?,
un saludo.
No, con lo de temporalmente me refería a que en toda la web se utiliza https menos al conectar con redsys que es mediante http. Con estos cambios no vas a tener ningún problema ni al enviar ni recibir datos.
Ok,
muchas gracias por la aclaración.
Gracias por el aporte, es super util. Tambien hay un problema que es bastante comun con el modulo REDSYS y es que hay veces que al intentar realizar un pago te aparece pedido duplicado.
Perfecto,
precísamente quitamos la capa «segura» del proceso de «pago».
No, esa no puede ser la solución.
Obviamente la solución buena es que Redsys se ponga las pilas y haga que sus servicios sean compatibles con SNI, pero mientras no pase esto, entre no tener HTTPS en la tienda y tener, salvo en la conexión de vuelta, yo lo tengo bastante claro.
La tienda sigue siendo segura y el pago también, recordamos que en esa comunicación únicamente hay datos de confirmación de que se ha pagado correctamente, no hay datos sensibles expuestos.
Si se tiene implementada una redirección forzada de http a https (muy habitual y recomendado), este método no va a funcionar a no ser que se añada una excepción a la redirección para la ruta de validación.
Buen apunte, gracias.