Оказалось, что на той виртуалке, где не работает, стоит Net::SSLeay версии 1.8, и он действительно отвергает сертификат.
Почему-то условия проверки не выполняются:
if (Net::SSLeay::CTX_use_certificate_chain_file($ctx,$f)) {
$havecert = 'PEM';
} elsif (Net::SSLeay::CTX_use_certificate_file($ctx,$f,FILETYPE_ASN1)) {
$havecert = 'DER';
Такая ошибка:
$havecert or return IO::Socket::SSL->error(
"Failed to load certificate from file (no PEM, DER or PKCS12)");
Цепочка сертификатов не используется, но есть ca.crt. Может его нужно добавить в цепочку?
А там, где работает, стоит Net::SSLeay версии 1.65.
Сертификаты ровно те же самые, скопированные файлзиллой.
Сейчас попробуем сделать даунгрейд Net::SSLeay до версии 1.65.