Conectando usando https a un servidor con un certificado firmado por una CA que creé

Tengo un entorno de prueba que utiliza Ruby para conducir un servidor a través de una conexión https. Dado que las últimas versiones de Ruby se niegan a conectarse a un servidor https con un certificado no válido (consulteesta pregunta anterior mía) y me gustaría comenzar a usar una versión más nueva de Ruby, estoy tratando de configurar un certificado válido.

He creado un certificado de CA para usar (se están probando varios servidores, por lo que esta parece la forma más fácil), y lo he utilizado con éxito para firmar un nuevo certificado que se ha instalado en un servidor y se está utilizando. He agregado el certificado de CA a la tienda del navegador y ahora (el navegador) se conectará al servidor sin quejas. Por lo tanto, estoy seguro de que mis certificados son válidos y están configurados correctamente.

Sé que Ruby no usa la misma tienda que el navegador. He usado el archivo CA disponibleaqu para probar la conexión a otros servidores (públicos) (configurado conNet::HTTP#ca_file= método) y esto también funciona.

Lo que no puedo poner a trabajar es que Ruby se conecte a mi servidor usando mi certificado. He intentado varias formas de señalarlo en mi certificado (incluida la adición de mi certificado al archivo vinculado anteriormente) y siempre da el mismo error:

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

¿Qué debo hacer para convencer a Ruby de que acepte mi certificado y se conecte a mi servidor?

El código que estoy usando es:

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)

Asumo que esto está mal de alguna manera. Lo que quiero saber es, ¿qué debo hacer para usar mi certificado de CA?

Respuestas a la pregunta(6)

Su respuesta a la pregunta