aboutsummaryrefslogtreecommitdiff
path: root/content/Informatique/ssl_proxy.rst
diff options
context:
space:
mode:
authorSébastien Dailly <sebastien@chimrod.com>2014-05-09 14:30:46 +0200
committerSébastien Dailly <sebastien@chimrod.com>2014-05-12 21:19:34 +0200
commitb9e22325bb46e2611a73e54a3f0ade31800d1bd9 (patch)
tree60b8aa46b47ec7fd4b8c8d62821aeef0b22be1a5 /content/Informatique/ssl_proxy.rst
parent23d7fb3e69d06b718a160c3ded763e6e6fbe3240 (diff)
Moved to pelican 3.3
Diffstat (limited to 'content/Informatique/ssl_proxy.rst')
-rw-r--r--content/Informatique/ssl_proxy.rst128
1 files changed, 0 insertions, 128 deletions
diff --git a/content/Informatique/ssl_proxy.rst b/content/Informatique/ssl_proxy.rst
deleted file mode 100644
index c57f27e..0000000
--- a/content/Informatique/ssl_proxy.rst
+++ /dev/null
@@ -1,128 +0,0 @@
-.. -*- 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 !