私はSSLに頭を悩ませようとしています。
ローカルホストにJettyサーバーをセットアップし、Keytoolを使用して独自の証明書を生成しました。
https:// localhost:8443にアクセスすると、この証明書を信頼できないというエラーが表示されます。
私が使う
keytool -export -alias pongus -keystore keystore -file certfile.cer
クライアントがサーバーで認証する必要があると思う証明書を作成するには。(これは私が非常に間違っている可能性がある場所です!)
私は次のルビーコードを持っています:
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)
私が間違っていることについて何か考えはありますか?
編集
私はそれを取得したいので、私は正しいサーバーに接続していることを保証し、サーバーは、間に改ざんすることなく、私がそれに接続していることを保証できます。サーバーとクライアントの両方を開発しています。