Perché OpenSSL e Python restituiscono impronte digitali SSL diverse?

0

Uso getmail , uno strumento scritto in Python, per recuperare la posta via IMAP. Oggi ha improvvisamente smesso di funzionare perché si lamenta di una mancata corrispondenza delle impronte digitali SSL. (Ho sempre specificato l'impronta digitale per controllare il file di configurazione di getmail e ottengo questa impronta dallo strumento da riga di comando di OpenSSL.)

In base alla riga di comando openssl di seguito, l'impronta digitale del certificato SSL del mio server di posta è 393c7c58738fa6643cedd9943ffb6e951b2d3b576991d9671d86921ee79bb68a :

openssl s_client -connect onza.mythic-beasts.com:443 < /dev/null 2>/dev/null \
| openssl x509 -fingerprint -sha256 -noout -in /dev/stdin \
| cut -f2 -d= | tr -d : | tr '[:upper:]' '[:lower:]'

Tuttavia, secondo getmail e al seguente semplice controllo delle impronte digitali Python (che essenzialmente ho estratto dal codice sorgente getmail), il certificato è in realtà 63d1c9e28c51aebd0c26463563be30e4df6814fa5406bab1787d1b9bdd19f15e .

#!/usr/bin/env python

import imaplib
import hashlib

conn = imaplib.IMAP4_SSL('onza.mythic-beasts.com')
sslobj = conn.ssl()
peercert = sslobj.getpeercert(True)
actual_hash = hashlib.sha256(peercert).hexdigest().lower()
print(actual_hash)
conn.logout()

Vedo gli stessi risultati su molti computer diversi che eseguono diverse distribuzioni GNU / Linux e connessi a reti diverse.

Perché openssl e Python riportano impronte digitali diverse per lo stesso host? Come faccio a sapere qual è il corretto? Python o OpenSSL forse memorizzano nella cache una vecchia copia del certificato? In tal caso, come posso cancellare la cache?

    
posta Psychonaut 09.07.2018 - 10:03
fonte

1 risposta

2

According to the openssl command line below, my mail server's SSL certificate fingerprint is 393c7c58738fa6643cedd9943ffb6e951b2d3b576991d9671d86921ee79bb68a:

openssl s_client -connect onza.mythic-beasts.com:443 < /dev/null 2>/dev/null \

Si sta utilizzando la porta 443 per verificare l'impronta digitale. La porta 443 è il server web (https) e non il server di posta come si afferma. Il server di posta è invece sulla porta 993 (imaps). Se sostituisci onza.mythic-beasts.com:443 con onza.mythic-beasts.com:993 otterrai l'impronta che ti aspetti, ovvero 63d1c9e28c51aebd0c26463563be30e4df6814fa5406bab1787d1b9bdd19f15e .

    
risposta data 09.07.2018 - 10:10
fonte

Leggi altre domande sui tag