Sécuriser un serveur http via stunnel et un certificat [HELP] - Sécurité - Systèmes & Réseaux Pro
Marsh Posté le 10-05-2013 à 13:51:23
Bon j'ai avancé.
J'arrive à créer un certificat CA, un client et un serveur à partir dudit CA.
J'ai sortit un certificat client PKCS12 et je l'ai importé sur Firefox, sur le gestionnaire de certificats Windows 8 et sur android.
Résultat, sur FF et android les navigateurs m'ont demandé un certificat à la connexion et se sont connectés sans soucis.
Sur IE et Chromium (qui utilise le gestionnaire windows), la connexion ne fonctionne pas:
- Chromium me sort: "Erreur 107 (net::ERR_SSL_PROTOCOL_ERROR) : Erreur de protocole SSL"
- et stunnel: "SSL_accept: 140890C7: error:140890C7:SSL routines: SSL3_GET_CLIENT_CERTIFICATE:peer did not return a certificate"
Je n'arrive pas à savoir ce qui ne va pas, je continue d'investiguer.
Marsh Posté le 10-05-2013 à 14:02:20
Tu l'as mis dans Personnal le certificat client dans le store windows ? Avec la clé privée ?
Tu as bien la CA dans les Trusted root certificates ?
Marsh Posté le 12-05-2013 à 23:19:13
J'ai supprimé et réimportés les certificats.
Le CA est bien dans les "Autorités de certification racine de confiance" et le certificat client est bien dans "Personne"l, avec sa clé.
Je pense que mon problème viens de la génération des certificats, comme si les navigateurs n'arrivaient à faire le lien entre le site et le certificat.
Il faut dire que je n'ai pas de nom de domaine, je ne sais pas si ça peut jouer.
Marsh Posté le 12-05-2013 à 23:49:04
Si le CN de ton certificat serveur n'est pas égal à ton URL accédée, tu auras un message d'avertissement sur ton navigateur mais ça s'arrête là.
Tes erreurs retournées indiquent une non présentation d'un certificat client, donc c'est autre chose.
T'as pas des logs plus complet en mode "debug" au niveau de stunnel pour trouver éventuellement d'autres pistes ?
Marsh Posté le 12-05-2013 à 23:53:01
Il n'y a pas de lien entre le site et le certificat client. Ton certificat tu pourrais le présenter à n'importe quel site potentiellement. Après sur ton serveur tu peux configurer pour n'accepter des certificats émis que par telle ou telle CA. C'est là où tu peux faire un lien (enfin une restriction).
C'est ton certificat serveur qui est lié au site où le CN du certificat (ou un SAN) doit correspondre à l'url (donc soit une ip, soit un nom dns (externe, interne, ou juste nom de machine mais dans tous les cas c'est résolu par le dns) pour de l'https)
Faudrait comprendre l'erreur de chromium. Pour IE, regarder les options SSL.
Et regarder ce que tu as généré comme certificat aussi.
Perso je connais pas stunnel donc j'avoue là dessus je peux pas trop t'aider mais j'ai déjà mis en place du ssl sur du squid, de l'apache, du iis, et plein d'autres services, le principe reste le même.
Marsh Posté le 12-05-2013 à 23:58:31
Spam
Voilà ce que ça donne en mode debug avec une seule connexion de chromium:
Code :
|
Et une connexion juste après avec FF (qui marche)
Code :
|
EDIT: virage d'IP
Marsh Posté le 13-05-2013 à 00:50:17
Hmmm, tu utilises les courbes élliptiques pour tes certificats ?
Peut être c'est pas géré par Chromium et IE. Perso je baisserai ça
Marsh Posté le 13-05-2013 à 21:28:42
Ouaip parce que de base je crois qu'IE ne gère pas au-delà du TLS 1.0.
Marsh Posté le 14-05-2013 à 00:09:05
Je vais investiguer de ce côté.
Je n'ai en tout cas pas demandé à openSSL d'utiliser les courbes élliptiques mais il le fait peut-être par défaut.
Pour la version TLS, il semble qu'avec FF c'est un TLS 1.0 qui est négocié:
Code :
|
Marsh Posté le 19-05-2013 à 05:08:37
Pour l'instant je ne me suis pas re-penché dessus... j'aurai de nouveau du temps dans 2 semaines.
Marsh Posté le 09-05-2013 à 18:06:30
Bonjour,
Je suis entrain de me perdre dans SSL et les certificats.
Ce que j'essaye de faire est simple:
Client <----- https -----> stunnel <----http ----> Serveur http
/inbefore, le serveur http final ne supporte pas le https.
J'ai configuré stunnel et j'arrive sans soucis à me connecter en https au serveur cible. Jusque là tout va bien.
Maintenant je veux vraiment sécuriser tout ça via un certificat sur le Client et stunnel, stunnel étant configuré pour rejeter toute connexion non certifiée.
J'ai donc généré un certificat auto-signé en suivant... euh j'ai essayé tellement de truc que je suis perdu. Typiquement voici le genre de tuto que j'ai utilisé: http://www.akadia.com/services/ssh [...] icate.html
Enfin bref de ce que je comprend c'est qu'il me faut un certificat client, et:
- faire savoir à stunnel que ce certificat est autorisé
- faire en sorte que le client s'identifie avec ce certificat quand il se connecte à mon site
Et là je suis perdu:
- générer le certificat s'avère ultra complexe avec des CA et autre fioriture du genre, moi je voudrai juste un truc bidon
- quand j'arrive à générer le certificat .crt il semble qu'il faille le covertir en .pem pour stunnel et ça foire (je peux donner l'erreur si besoin)
- quand j'ai généré le certificat, et enregistré celui-ci dans le gestionnaire windows, mes navigateurs (FF, chrome, Ie) ne présentent pas ledit certificat à stunnel (selon le log de stunnel)
Bref je suis paumé
Si quelqu'un à déjà fait ça et saurait m'aiguiller je suis preneur.
Merci d'avance
---------------
sheep++