Перше повідомлення про помилку повідомляє вам більше про проблему:
перевірити помилку: num = 20: не вдалося отримати сертифікат місцевого емітента
Центр видачі сертифікатів сертифіката сервера кінцевої сутності є
Захищений сервер VeriSign класу 3 CA - G3
Уважно подивіться у своєму файлі ЦС - ви не знайдете цього сертифіката, оскільки він є посередницьким ЦС, - те, що Ви знайшли, було подібним іменем G3 Public Primary CA VeriSign.
Але чому вдається інший зв’язок, а цей - ні? Проблема полягає в неправильній конфігурації серверів (дивіться самі, використовуючи -debug
опцію). "Хороший" сервер надсилає весь ланцюжок сертифікатів під час рукостискання, надаючи вам необхідні проміжні сертифікати.
Але сервер, який не працює, надсилає вам лише кінцевий сертифікат сутності, і OpenSSL не здатний завантажити відсутній проміжний сертифікат "на льоту" (що було б можливо шляхом інтерпретації розширення доступу до інформації про повноваження). Тому ваша спроба не вдається скористатися, s_client
але вона все одно матиме успіх, якщо ви переглянете ту саму URL-адресу, наприклад, за допомогою FireFox (який підтримує функцію "виявлення сертифіката").
Ваші варіанти вирішення проблеми - це або виправити це на стороні сервера, змусивши сервер надсилати також весь ланцюжок, або передавши відсутній проміжний сертифікат OpenSSL як параметр на стороні клієнта.
-CAfile /etc/ssl/certs/ca-certificates.crt