8
votes

Utilisation d'un certificat auto-signé

J'essaie juste d'obtenir ma tête autour de SSL.

J'ai mis en place un serveur de jetty sur mon localhost et a généré mon propre certificat en utilisant keytool .

maintenant quand je vais à https: // localhost: 8443 / I Obtenir la confiance ne peut pas faire confiance à cette erreur de certificat.

J'utilise

Tool-BeyTool -export -Alias ​​Pongus -keystore KeyStore -File Certfile.Cer

Pour créer le certificat, je pense que le client doit s'authentifier avec le serveur. (C'est là que je pourrais être très faux!)

J'ai le code rubis suivant: xxx

ceci est imprimé "yay", donc le certificat Le fichier .cer existe.

mais je reçois les erreurs xxx

toutes idées ce que je fais mal?

Modifier

Je veux l'obtenir afin que je garantisson que je me connecte au bon serveur, et que le serveur peut garantir que cela me le connecte, sans aucune altération entre les deux. Je développe à la fois le serveur et le client.


0 commentaires

3 Réponses :


-6
votes

Changer xxx

à xxx

une fois que vous faites cela, le SSL fonctionnera correctement. J'ai utilisé ce temps plusieurs fois dans mes environnements de développement, fonctionne toujours parfaitement.


3 commentaires

Merci, mais je ne veux pas de la vérification de l'étape de côté. . ;-)


Je suis désolé, il a fallu si longtemps pour répondre à cela. Comme Verify_Peer essaie de valider le certificat contre un émetteur SSL connu, vous devez utiliser Verify_None pour contourner ce chèque. Cela ne validait pas le certificat en soi, mais la validation de l'émetteur du certificat. Comme les certificats auto-signés n'ont pas d'émetteur connu, il échoue au chèque.


C'est vraiment dangereux. Ne faites pas cela si vous ne savez pas ce que vous faites.



0
votes

Votre client a besoin d'accès à sa clé privée. La clé privée n'est pas dans le certificat, le certificat ne contient que la clé publique. Désolé, je ne sais pas Ruby, mais une technique commune consiste à regrouper la clé privée et le certificat dans un seul PKC n ° 12, aka P12, fichier et fournissez cela à la bibliothèque de crypto.


5 commentaires

Nice, c'est une bonne information pour me donner quelque chose à continuer! Je retourne mal à la documentation de KeyTool. Merci


Ruby accepte Pem. Theres pas besoin de P12 et de la clé privée du tout. C'est un trou de sécurité pour donner le pk :-)


@Izap: Il n'y a pas une clé privée, il y en a deux: une pour le client et un pour le serveur. C'est pourquoi j'ai dit que le client a besoin d'accéder à sa clé privée , pas le serveur.


Greg vous essayez de mélanger deux choses. Le gars qui a demandé une vérification du certificat de serveur SSL contre CA Cert. Vous décrivez l'autorisation de certification utilisateur SSL. Ce sont deux choses différentes. Ils peuvent vivre ensemble.


Désolé, il a vraiment besoin d'une clé privée mais uniquement pour un client client. Pour Server Cert, la clé privée est stockée sur le serveur. Voir mon post ci-dessus.



7
votes

Votre client a besoin d'accès à son clé privée. p>

Vous n'avez pas besoin de la clé privée pour la vérification du certificat de serveur. Tout ce dont vous avez besoin est le certificat lui-même qui contient la clé publique. Seul le serveur a la clé privée. Bien décrit ici http://www.verisign.com/ssl / SSL-Information-Centre / How-SSL-Security-Works / P>

Ma recommandation est simple. Vérifiez que votre certificat est correct. P>

File.open( "client_certificate.pem", 'rb' ) { |f| cert = f.read }
File.open( "client_key.pem", 'rb' ) { |f| key = f.read }
http_session.cert = OpenSSL::X509::Certificate.new(cert)
http_session.key = OpenSSL::PKey::RSA.new(key, nil)

9 commentaires

En tout cas, vous n'avez pas besoin de clé privée sur votre client. Plus jamais. Période.


Une autre chose. Vous pouvez également exporter le certificat à l'aide de Firefox ou d'IE! C'est très simple. Accédez à la page et exportez-le vers un fichier PEM. Vous pouvez utiliser celui-là avec rubis. Je l'ai fait plusieurs fois. Travaux!


Tort. Vous ne comprenez tout simplement pas l'authentification du client SSL, ce que le questionneur a clairement indiqué qu'il a besoin. "... que je pense est ce que le client doit s'authentifier avec le serveur ..." ainsi que le commentaire dans la modification indiquent ceci.


Pas de Greg, vous êtes pas Droite. Il est pas Demander à propos de SSL Client Auth, mais il est confronté à un problème avec la vérification du certificat SSL Server. Ceci est différent. Attributs http_session.ca_file et http_session.verify_mode sont pas pour les certs clients SSL.


@Izap: Vous devez lire ce qu'il a écrit: "... Donc, je vous garantis que je me connecte au serveur de droite et que le serveur peut garantir que cela me connecte à cela, ...". C'est ce qu'on appelle le client auth.


@Ggs: il est possible qu'il y ait une différence entre ce qu'il a dit et ce qu'il voulait dire.


@Jumbogram: convenu, c'est souvent un problème ici. Vous devez lire parfois entre les lignes.


Oui, j'ai raté la partie "Le serveur peut garantir que cela me le connecte". Tout ce que j'ai écrit, c'est toujours bien sauf "Ce n'est pas vrai". Il a besoin des deux. Donc, dans un, il a besoin du serveur certificat sans la clé privée, B Il a besoin d'un client client, y compris sa clé privée (bien sûr). Désolé pour la confusion mais j'étais à peu près sûr qu'il a besoin de Server Cert (en fonction de son code source).


J'ai ajouté une partie du client à ma réponse. J'espère que ça vous aide.