En este post vamos a ver la solución que hay que darle, cuando Paypal u otra web con la que estemos integrando nuestro software mediante API y curl necesite hacer peticiones multicurl con NSS y OpenSSL.
Este problema viene dado a que la compilación de CURL con PHP en el sistema, (ya sea servidor físico, servidor virtual o docker) no haya sido la correcta por diferentes motivos y php no pueda ofrecer el certificado a la petición del cliente.
El siguiente script, mira que versión de php y curl tiene el sistema, se descarga los archivos fuentes y compila CURL y después compila el modulo CURL de PHP para la misma versión del sistema.
Con esto solucionamos el problema de compilación del módulo php-curl con la versión CURL del sistema.
Cabe decir que esto solo me ha pasado con versiones 5.6 de PHP en CentOS 6 y 7 y Debian 8.
#!/bin/bash
##script válido para CentOS y derivados
#
PHP_VERSION=$(rpm -qa –queryformat '%{version}' php56)
CURL_VERSION=$(curl -V|head -1|awk '{print $2}')
wget –no-check-certificate http://mirror.cogentco.com/pub/php/php-5.6.17.tar.bz2 -O /tmp/php-${PHP_VERSION}.tar.bz2
wget –no-check-certificate http://curl.haxx.se/download/curl-${CURL_VERSION}.tar.gz -O /tmp/curl-${CURL_VERSION}.tar.gz
cd /tmp; tar xjf php-${PHP_VERSION}.tar.bz2
cd /tmp; tar xzf curl-${CURL_VERSION}.tar.gz
cd curl-${CURL_VERSION}
./configure
make
make install
cd /tmp; rm -rf curl-${CURL_VERSION}*
sleep 2
cd /tmp/php-${PHP_VERSION}/ext/curl/
phpize
./configure
make
make install
cd /tmp; rm -rf php-${PHP_VERSION}*