Подключение через https к серверу с сертификатом, подписанным центром сертификации, который я создал

У меня есть тестовая среда, которая использует Ruby для управления сервером через соединение https. Поскольку последние версии Ruby отказываются подключаться к серверу https с недействительным сертификатом (см.это мой предыдущий вопрос) и я хотел бы начать использовать более новую версию Ruby, я пытаюсь установить действительный сертификат.

Я создал сертификат CA для использования (тестируется несколько серверов, поэтому это кажется более простым способом) и успешно использовал его для подписи нового сертификата, который был установлен на сервере и используется. Я добавил сертификат CA в хранилище браузера, и теперь он (браузер) будет без проблем подключаться к серверу. Поэтому я уверен, что мои сертификаты действительны и настроены правильно.

Я знаю, что Ruby не использует тот же магазин, что и браузер. Я использовал доступный файл CAВот проверить подключение к другим (общедоступным) серверам (установите с помощьюNet::HTTP#ca_file= метод) и это тоже работает.

То, что я не могу заставить работать - это подключение Ruby к моему серверу с использованием моего сертификата. Я пробовал различные способы указать его на своем сертификате (включая добавление моего сертификата к файлу, указанному выше), и он всегда выдает одну и ту же ошибку:

SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 read server hello A (OpenSSL::SSL::SSLError)

Что мне нужно сделать, чтобы убедить Руби принять мой сертификат и подключиться к моему серверу?

Код, который я использую:

require 'net/https'

uri = URI.parse("https://hostname/index.html")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.ca_file = "My CA cert file"
request = Net::HTTP::Get.new(uri.path)
response = http.request(request)

Я предполагаю, что это как-то не так. Что я хочу знать, что я должен сделать, чтобы использовать свой сертификат CA?

Ответы на вопрос(3)

Ваш ответ на вопрос