From 0480f5ba560dbede71f1aa118da647f406e87f14 Mon Sep 17 00:00:00 2001 From: Sébastien Dailly Date: Thu, 12 Dec 2013 10:49:55 +0100 Subject: Nouvel article sur openssl --- content/Informatique/chiffrage.rst | 2 +- content/Informatique/ssl_proxy.rst | 128 ++++++++++++++++++++++++++++++++++ content/Perso/net.rst | 2 +- content/images/chiffer/certificat.jpg | Bin 0 -> 11928 bytes content/images/chiffer/pgp_150.jpg | Bin 0 -> 14551 bytes content/images/chiffer/pgp_75.jpg | Bin 0 -> 3659 bytes 6 files changed, 130 insertions(+), 2 deletions(-) create mode 100644 content/Informatique/ssl_proxy.rst create mode 100644 content/images/chiffer/certificat.jpg create mode 100644 content/images/chiffer/pgp_150.jpg create mode 100644 content/images/chiffer/pgp_75.jpg diff --git a/content/Informatique/chiffrage.rst b/content/Informatique/chiffrage.rst index fcda1dd..1ee5866 100644 --- a/content/Informatique/chiffrage.rst +++ b/content/Informatique/chiffrage.rst @@ -5,7 +5,7 @@ Mettre en place une solution de chiffrage avec authentification forte ##################################################################### :date: 2008/11/07 -:tags: Libre +:tags: Libre, ViePrivée :summary: |summary| .. |summary| replace:: diff --git a/content/Informatique/ssl_proxy.rst b/content/Informatique/ssl_proxy.rst new file mode 100644 index 0000000..c57f27e --- /dev/null +++ b/content/Informatique/ssl_proxy.rst @@ -0,0 +1,128 @@ +.. -*- mode: rst -*- +.. -*- coding: utf-8 -*- + +======================================== +Vérifier un certificat SSL en entreprise +======================================== + +:date: 2013-12-19 +:tags: ViePrivée +:summary: |summary| +:logo: static/images/chiffer/pgp_75.jpg + + +.. figure:: |filename|/images/chiffer/pgp_150.jpg + :figwidth: 150 + :figclass: floatright + :alt: Pavement + + Image : `Elsamuko`_ (creativecommons_) + +.. _Elsamuko: http://www.flickr.com/photos/28653536@N07/10595809575/ +.. _creativecommons: http://creativecommons.org/licenses/by-sa/2.0/deed.fr + +|summary| + +.. |summary| replace:: + openssl permet de vérifier un certificat SSL en ligne de commande. Ceci est + très utile si l'on souhaite vérifier son installation et s'assurer que le + certificat fourni est bien le bon. Toutefois, l'application ne fonctionne + pas si un proxy est nécessaire pour se connecter au site distant. + +C'est bien dommage, car en entreprise, le proxy est souvent obligatoire. Si +l'on souhaite s'assurer que le proxy ne va pas nous présenter un mauvais +certificat, il est nécessaire de passer par le navigateur web pour vérifier +l'authenticité du certificat, mais il n'est alors pas possible d'automatiser la +procédure. + +Pour mener à bien notre action, il va falloir ruser, et jouer avec les +connexions réseau, mais avant tout ça, reprenons un peu les bases, et voyons +comment récupérer un certificat ssl en ligne de commande. + +openssl +======= + +Openssl est une librairie utilisée pour la sécurité et le chiffrement, elle +permet de générer des certificats clients et serveur, de chiffrer selon +différents algorithmes, etc. + +Une application en ligne de commande existe, et permet de contrôler un +certificat de la manière suivante : + +.. code-block:: console + + $ echo -n | openssl s_client -connect site.test:443 | openssl x509 -noout -md5 -fingerprint + +Toutefois, il faut que le site soit accessible directement, sans proxy. Si +c'est le cas, il n'est plus possible de vérifier le certificat en question. + +C'est problématique si l'on souhaite justement s'assurer que le proxy ne fait +pas du mitm_. Pour vérifier le certificat dans ces conditions, il va falloir +nous faire entrer un autre outil qui va se charger de passer le proxy. + +.. _mitm: http://fr.wikipedia.org/wiki/Attaque_de_l%27homme_du_milieu + +Vous avez remarqué que l'on précise le serveur et le port sur lequel est +installé le certificat à vérifier. Il est donc possible de tester un certificat +sur `localhost:1234` si on le souhaite (à la condition d'avoir un serveur https +qui réponde sur ce port). + +socat +===== + +C'est là qu'intervient socat. Socat_ est un outil similaire à netcat (le +couteau suisse du web), sauf que socat à la possibilité de gérer les requêtes +bidirectionnelles. Nous allons nous en servir pour ouvrir une connexion à +travers le proxy sur le site que nous souhaitons tester. + +.. _socat: http://www.dest-unreach.org/socat/ + +En laissant la connexion ouverte, on permet à openssl de s'y connecter et +effectuer ses tests. C'est donc grâce aux deux outils que l'on va pouvoir faire +notre contrôle. + +On se crée la connexion avec la commande suivante : + +.. code-block:: console + + $ socat TCP4-LISTEN:2022 "PROXY:site.test:443 | TCP:proxy.test:8080" + +La connexion n'est pas persistante, elle sera fermée dès sa première +utilisation, cela permet de chaîner les deux commandes directement : + +.. code-block:: bash + + #!/bin/sh + + if [[ ! -z $https_proxy ]]; then + proxy=`echo ${https_proxy} | sed -e 's|http://||' -` + socat TCP4-LISTEN:2022 "PROXY:$1 | TCP:${proxy}" & + echo -n | openssl s_client -connect localhost:2022 | openssl x509 -noout -md5 -fingerprint + else + echo -n | openssl s_client -connect $1 | openssl x509 -noout -md5 -fingerprint + fi + +enregistrez ce script sous `check_ssl.sh` puis lancez cette commande ainsi : + +.. code-block:: console + + $ check.sh site.test:443 + depth=0 C = FR, ST = Some-State, O = Internet Widgits Pty Ltd, CN = site.test, emailAddress = contact@site.test + verify error:num=20:unable to get local issuer certificate + verify return:1 + depth=0 C = FR, ST = Some-State, O = Internet Widgits Pty Ltd, CN = site.test, emailAddress = contact@site.test + verify error:num=21:unable to verify the first certificate + verify return:1 + DONE + MD5 Fingerprint=73:4F:77:1D:2B:C1:4F:0E:3F:42:FA:14:A9:0F:BC:80 + +Si la variable d'environnement `HTTPS_PROXY` est renseignée le script +créera le tunnel via socat, sinon, openssl sera utilisé directement pour +vérifier le certificat. + +Vous pouvez le comparer avec ce que vous affiche le navigateur pour vous +assurer qu'il est cohérent : + +.. image:: |filename|/images/chiffer/certificat.jpg + +N'oubliez pas, on n'est jamais trop prudent ! diff --git a/content/Perso/net.rst b/content/Perso/net.rst index 66f34b5..8b46dae 100755 --- a/content/Perso/net.rst +++ b/content/Perso/net.rst @@ -5,7 +5,7 @@ Le net en france ---------------- :date: 2009-02-25 -:tags: Humeur, Infowar +:tags: Humeur, Infowar, ViePrivée :logo: static/images/blackout.png :summary: |summary| diff --git a/content/images/chiffer/certificat.jpg b/content/images/chiffer/certificat.jpg new file mode 100644 index 0000000..bc42d28 Binary files /dev/null and b/content/images/chiffer/certificat.jpg differ diff --git a/content/images/chiffer/pgp_150.jpg b/content/images/chiffer/pgp_150.jpg new file mode 100644 index 0000000..adc3dca Binary files /dev/null and b/content/images/chiffer/pgp_150.jpg differ diff --git a/content/images/chiffer/pgp_75.jpg b/content/images/chiffer/pgp_75.jpg new file mode 100644 index 0000000..26d2ed6 Binary files /dev/null and b/content/images/chiffer/pgp_75.jpg differ -- cgit v1.2.3