J'essaie juste de comprendre le protocole SSL.Utilisation d'un certificat auto-signé
J'ai configuré un serveur Jetty sur mon hôte local et généré mon propre certificat en utilisant Keytool.
Maintenant, quand je vais à https://localhost:8443/ je reçois le ne peut pas faire confiance à cette erreur de certificat.
J'utilise
keytool -export -alias pongus -keystore keystore -file certfile.cer
Pour créer le certificat que je pense est ce que le client a besoin d'authentifier auprès du serveur. (C'est là que je pourrais être très mal!)
J'ai le code ruby suivant:
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
Cela ne print 'yay', de sorte que le fichier certfile.cer existe.
Mais je reçois les erreurs
/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)
Toutes les idées que je fais mal?
EDIT
Je veux donc je vous garantis que je me connecte au bon serveur, et le serveur peut garantir qu'il me se connecte, sans aucune altération entre les deux. Je développe à la fois le serveur et le client.
Dans tous les cas, vous n'avez pas besoin de clé privée sur votre client. Plus jamais. Période. – lzap
Encore une chose.Vous pouvez également EXPORTER le certificat en utilisant Firefox ou IE! C'est très simple. Accédez à la page et exportez-la dans un fichier PEM. Vous pouvez utiliser celui-là avec Ruby. Je l'ai fait plusieurs fois. Travaux! – lzap
Incorrect. Vous ne comprenez simplement pas l'authentification du client SSL, ce que le demandeur a clairement déclaré avoir besoin. "... ce que je pense est ce que le client a besoin de s'authentifier avec le serveur ..." ainsi que le commentaire dans le montage l'indiquent. –