[gull] Truc et astuces: Afficher les empreintes sha1 et md5, d'un site https, en ligne de commande avec OpenSSL

Félix Hauri felix at f-hauri.ch
Wed Sep 9 10:53:56 CEST 2009


Bonjour,

Attention, malgré le titre, ce mail à surtout pour but de démontrer l'utilisation 
de multiple descripteurs de fichiers dans bash.

Voici une méthode pour afficher les empreintes des clefs d'un site https,
en ligne de commande, avec openssl:

$ ( echo |
     openssl s_client -connect www.poste.ch:443 2>&1 |
     tee /dev/stderr |
     openssl x509 -md5 -fingerprint -noout >/dev/tty
  ) 2>&1 |
     openssl x509 -sha1 -fingerprint -noout
SHA1 Fingerprint=3F:1D:E0:81:E8:22:0F:63:C3:A4:19:A7:FD:E0:5C:8C:C8:19:F0:58
MD5 Fingerprint=E7:D9:46:5C:FC:2A:C4:66:16:23:A8:4D:03:8C:EE:F0

Mais bon, jongler avec stderr n'est pas une bonne idée:
 - On risque de perdre des messages d'erreur
 - la poursuite d'un tel script n'est pas aisée...

Une particularite de bash est la possibilité de générer autant de
descripteur occasionnels que nécessaire (max ??), sous la forme:
   ``(liste de commande)5>&1'' 
exemple:
$ (echo >&44 Salut )44>&1 
Salut
$ (echo >&44 Salut )44>&1 6>&1 7>&1
Salut
$ (echo >&7 Salut )44>&1 6>&1 7>&1
Salut
$ (echo >&8 Salut )44>&1 6>&1 7>&1
bash: 8: Bad file descriptor


Cela peut etre des fichiers différents:
$ () >logfile 2>errfile 7>foofile 44>barfile <inputfile

Et donc:
$ (( echo |
     openssl s_client -connect www.ubs.com:443 2>&1 |
     tee /proc/self/fd/5 |
     openssl x509 -md5 -fingerprint -noout >&4
   ) 5>&1 |
     openssl x509 -sha1 -fingerprint -noout
 ) 4>&1 |
     sed 's/=/ \t/'
MD5 Fingerprint   0A:A2:64:5F:73:83:03:45:91:B7:82:D2:29:38:25:38
SHA1 Fingerprint  5E:76:E4:3A:85:D5:D9:18:DE:E1:79:BC:97:CA:B4:81:99:09:D5:3E

Le sed ne sert qu'à démontrer que les deux sorties passent désormais
par le descripteur 1 (sortie-standard -> entrée standard).

-- 
 Félix Hauri  -  <felix at f-hauri.ch>  -  http://www.f-hauri.ch


More information about the gull mailing list