Al utilizar el módulo de Perl libwww-perl (LWP), cuando se realizan conexiones vía SSL la verificación del certificado está activada por defecto. En el momento en que la conexión la establecemos contra un servidor cuyo certificado SSL es self-signed o está expirado/no válido recibiremos un mensaje de error, probablemente similar a:
"certificate verify failed"
En otros casos, como por ejemplo el de la API SDK en Perl de vSphere se recibe un mensaje completamente distinto:
# /usr/lib/vmware-vcli/apps/performance/viperformance.pl --credstore=/root/.vmware/credstore/vicredentials.xml --name esx1 --countertype net Server version unavailable at 'https://vcenter:443/sdk/vimService.wsdl' at /usr/share/perl5/VMware/VICommon.pm line 545.
La solución correcta sería configurar el CA de conexión para que la negociación fuera correcta o como es lógico, renovar el certificado si está expirado o no es válido. Para especificar la ruta donde tenemos los CA:
$ENV{HTTPS_CA_DIR} = '/etc/ssl/certs'
Si queremos hacer un «apaño» o solucionarlo rápido podemos deshabilitar la verificación SSL de varias formas:
Exportando la variable con valor «0» en nuestra sesión:
# export PERL_LWP_SSL_VERIFY_HOSTNAME=0
Deshabilitar la verificación dentro del script:
my $ua = LWP::UserAgent->new( ssl_opts => { SSL_verify_mode => 'SSL_VERIFY_NONE'}, );
O añadir la variable en el script:
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;