از طریق getmail، ابزاری که در پایتون نوشته شده است، برای پست الکترونیکی خود از طریق IMAP بازیابی می کند. امروز آن را به طور ناگهانی متوقف کار، زیرا در مورد عدم انطباق اثر انگشت SSL شکایت می کند. (من همیشه اثر انگشت را برای چک کردن در فایل پیکربندی getmail مشخص می کنم و این اثر انگشت را از ابزار خط فرمان OpenSSL دریافت می کنم.)
بر اساس خط فرمان openssl
زیر، اثر انگشت گواهینامه SSL 393c7c58738fa6643cedd9943ffb6e951b2d3b576991d9671d86921ee79bb68a
:
openssl s_client -connect onza.mythic-beasts.com:443 < /dev/null 2> / dev / null
| openssl x509 -fingerprint -sha256 -noout -in / dev / stdin
| برش -f2 -d = | tr -d: | tr '[:upper:]' '[:lower:]'
با این حال، طبق گواهی نامه جی تیما و پیمان ساده انگشتی زیر (که من اساسا از کد منبع دریافتی پاره شد)، گواهی در واقع 63d1c9e28c51aebd0c26463563be30e4df6814fa5406bab1787d1b9bdd19f15e
.
#! / usr / bin / env python
import imaplib
واردات هشلیب
conn = imaplib.IMAP4_SSL ('onza.mythic-beasts.com')
sslobj = conn.ssl ()
peercert = sslobj.getpeercert (راست)
actual_hash = hashlib.sha256 (peercert) .hexdigest (). پایین ()
چاپ (actual_hash)
conn.logout ()
من نتایج مشابهی را در بسیاری از رایانه های مختلفی که توزیع های گنو / لینوکس مختلف دارند و به شبکه های مختلف متصل می شوند، مشاهده می کنم.
چرا openssl
و Python گزارش های مختلف اثر انگشت را برای یک میزبان مشابه گزارش می کنند؟ چگونه می دانم کدام یک درست است؟ آیا پایتون یا OpenSSL ممکن است کپی قدیمی از گواهی را ذخیره کند؟ اگر چنین است، چگونه حافظه کش را پاک کنم؟