Это мой первый раз, когда я пытаюсь использовать библиотеку XMLRPC:: Client для взаимодействия с удаленным API, и я продолжаю получать эту ошибку:
warning: peer certificate won't be verified in this SSL session
Поиск вокруг Я нашел множество людей, которые получили эту ошибку. Обычно это с самозаверяющими сертификатами, и они просто хотят, чтобы он ушел, поэтому они делают что-то грязное, как обезьяна, так, как XMLRPC:: Client открывает его http-сеанс.
Я сначала предположил, что это был просто клиент, не заботящийся о том, был ли сертификат действительным или нет, поэтому я продолжил поиск и наткнулся на этот камень, Он просто заставляет проверять все сертификаты SSL и выдает жесткую ошибку, если она тоже не подходит. Это было именно то, что я хотел. Я включил его, снова запустил код, и теперь я получаю следующее:
OpenSSL:SSL::SSLError:
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B:
certificate verify failed
Конечно! Сертификат плохой! Но я дважды проверяю, чтобы убедиться, что openssl встроен в s_client так:
openssl s_client -connect sub.example.com:443
и что я получу:
CONNECTED(00000003)
---
Certificate chain
<snip>
Verify return code: 0 (ok)
Итак, теперь мы переходим к моему вопросу. OpenSSL (версия командной строки) говорит, что сертификат хорош. OpenSSL (библиотека Ruby) не согласен. Все мои веб-браузеры говорят, что сертификат хорош.
Несколько дополнительных деталей, которые могут быть полезны. Сертификат является подстановочным знаком, но действителен для домена. Параметр openssl s_client выполнялся на тех же машинных секундах, что и код Ruby. Это Ruby 1.8.7 p357, который установлен с RVM.
Использует ли Ruby что-то другое, кроме пакета CA, предоставленного операционной системой хоста? Есть ли способ сказать Ruby использовать конкретный комплект СА или системный?