Ruby 1.8.7 и Net :: HTTP: Создание запроса SSL GET с сертификатом клиента?

Я пытаюсь получить ресурс через SSL, используя Net :: HTTP . Вот соответствующий фрагмент кода:

req = Net::HTTP::Get.new(ContentURI.path)
https = Net::HTTP.new(ContentURI.host, ContentURI.port)
https.use_ssl = true
https.cert = OpenSSL::X509::Certificate.new(@cert_raw)
https.key = OpenSSL::PKey::RSA.new(@cert_key_raw)
https.verify_mode = OpenSSL::SSL::VERIFY_PEER
https.ca_file = File.join(TestDataPath, 'cacert.pem')
resp = https.start { |cx| cx.request(req) }

или с альтернативной последней строкой:

resp = https.get(ContentURI.path)

Я проверил, что различные биты (сертификат, ключ, сертификат CA, и т. Д. ) верны.

Проблема в том, что cx.request (req) выдает исключение:

OpenSSL::SSL::SSLError: SSL_connect SYSCALL returned=5 errno=0 state=SSLv3 read server session ticket A

Журнал ошибок Apache SSL на сервере содержит следующее:

[Tue Jan 24 11:47:26 2012] [debug] ssl_engine_kernel.c(1876): OpenSSL: Loop: SSLv3 read finished A
[Tue Jan 24 11:47:26 2012] [debug] ssl_engine_kernel.c(1905): OpenSSL: Exit: error in SSLv3 write session ticket A
[Tue Jan 24 11:47:26 2012] [debug] ssl_engine_kernel.c(1905): OpenSSL: Exit: error in SSLv3 write session ticket A
[Tue Jan 24 11:47:26 2012] [info] [client 10.11.88.53] SSL handshake interrupted by system [Hint: Stop button pressed in browser?!]
[Tue Jan 24 11:47:26 2012] [info] [client 10.11.88.53] Connection closed to child 0 with abortive shutdown (server _SERVERNAME_:443

Сертификат, ключ и сертификат CA файловая работа с этим хостом SSL через другие инструменты; У меня просто возникли проблемы с воспроизведением этого успеха программно, используя Net :: HTTP [S] .

Спасибо всем, кто может определить, что я делаю неправильно!

9
задан RoUS 24 January 2012 в 17:24
поделиться