Ich versuche nur, mich um SSL zu kümmern.Mit einem selbstsignierten Zertifikat
Ich habe einen Jetty-Server auf meinem localhost eingerichtet und mein eigenes Zertifikat mit Keytool generiert.
Jetzt, wenn ich zu https://localhost:8443/ gehe, bekomme ich die kann diesen Zertifikatsfehler nicht vertrauen.
Ich benutze
keytool -export -alias pongus -keystore Schlüsselspeicher -datei certfile.cer
Um das Zertifikat zu erstellen, was ich denke, ist das, was der Client mit dem Server authentifizieren muss. (Dies ist, wo ich sehr falsch sein könnte!)
Ich habe den folgenden Ruby-Code:
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
Dies gilt print 'yay', so die certfile.cer Datei existiert.
Aber ich bekomme die Fehler
/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)
Irgendwelche Ideen, was ich falsch mache?
EDIT
ich mag es bekommen, so garantiere ich, dass ich auf den richtigen Server anschließe, und der Server kann garantieren, dass es mich zu ihm verbinden, ohne dass zwischen Manipulation in. Ich entwickle sowohl den Server als auch den Client.
In jedem Fall brauchen Sie keinen privaten Schlüssel auf Ihrem Client. Niemals. Zeitraum. – lzap
Eine weitere Sache.Sie können das Zertifikat auch mit Firefox oder IE EXPORTIEREN! Es ist sehr einfach. Greifen Sie auf die Seite zu und exportieren Sie sie in eine PEM-Datei. Sie können das mit Ruby verwenden. Ich habe das mehrmals gemacht. Funktioniert! – lzap
Falsch. Sie verstehen einfach nicht die SSL-Client-Authentifizierung, die der Fragesteller eindeutig angegeben hat. "... was ich denke ist, was der Client benötigt, um sich mit dem Server zu authentifizieren ..." sowie der Kommentar in der Bearbeitung zeigen dies an. –