我只是想了解 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)
任何想法我做错了什么?
编辑
我想得到它,所以我保证我连接到正确的服务器,并且服务器可以保证是我连接到它,中间没有任何篡改。我正在开发服务器和客户端。