Используя самоподписанный сертификат

Я просто пытаюсь получить голову вокруг SSL.

Я настроил Гагатовый сервер на своем localhost и генерировал мое собственное использование сертификата Keytool.

Теперь, когда я перехожу к https://localhost:8443/, я добираюсь, банка не доверяют этой ошибке сертификата.

Я использую

keytool - экспорт - искажает pongus-keystore keystore - файл certfile.cer

Создать сертификат, который я думаю, - то, что клиент должен аутентифицировать с сервером. (Это - то, где я мог быть очень неправым!)

У меня есть следующий код Ruby:

require 'net/https'
require 'openssl'

require 'open-uri'

puts 'yay' if File.exists?('certfile.cer')

uri = URI.parse("https://localhost:8443/")
http_session = Net::HTTP.new(uri.host, uri.port)
http_session.use_ssl = true
http_session.verify_mode = OpenSSL::SSL::VERIFY_PEER
http_session.ca_file = 'certfile.cer'
res = http_session.start do |http|
  # do some requests here
  http.get('/')
end

Это действительно печатает 'yay', таким образом, certfile.cer файл действительно существует.

Но я получаю ошибки

/Applications/NetBeans/NetBeans 6.8.app/Contents/Resources/NetBeans/ruby2/jruby-1.4.0/lib/ruby/1.8/net/http.rb:586 warning: can't set verify locations
/Applications/NetBeans/NetBeans 6.8.app/Contents/Resources/NetBeans/ruby2/jruby-1.4.0/lib/ruby/1.8/net/http.rb:586:in `connect': certificate verify failed (OpenSSL::SSL::SSLError)

Какие-либо идеи, что я делаю неправильно?

Править

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

7
задан Mongus Pong 23 January 2010 в 21:34
поделиться

2 ответа

Ваш клиент нуждается в доступе к его закрытому ключу. Частный ключ не находится в сертификате, сертификат содержит только открытый ключ. Извините, я не знаю Ruby, но общая техника состоит в том, чтобы объединить закрытый ключ и сертификат в одном PKCS # 12, aka p12, файл и поставлять это в библиотеку Crypto.

0
ответ дан 8 December 2019 в 01:58
поделиться

Измените

http_session.verify_mode = OpenSSL::SSL::VERIFY_PEER

на

http_session.verify_mode = OpenSSL::SSL::VERIFY_NONE

, как только вы это сделаете, SSL будет работать должным образом. Я использовал это несколько раз в средах развития, всегда работает безупречно.

-8
ответ дан 8 December 2019 в 01:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: