[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