یک برنامه پایتون بنویس که به یک سرور HTTPS متصل شود، اطلاعات گواهی SSL/TLS (موضوع، صادرکننده، تاریخ شروع و پایان اعتبار) و پارامترهای رمزنگاری (نسخه TLS و cipher) را استخراج و چاپ کند.
2.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 03:03 0.0
برای حل این مسئله از ماژولهای استاندارد ssl و socket در پایتون استفاده کن: یک SSLContext بساز، برای SNI پارامتر server_hostname را به wrap_socket بده، سپس با getpeercert() اطلاعات گواهی و با متدهای ssock.cipher() و ssock.version() پارامترهای رمزنگاری را بگیر. اگر نیاز به جزئیات بیشتر از گواهی باشی از getpeercert(binary_form=True) و کتابخانه cryptography برای پارس کردن x509 استفاده کن. حتما timeout و مدیریت استثناها را اضافه کن و برای تولید برنامهای امن از load_default_certs() و verify_mode=ssl.CERT_REQUIRED استفاده کن (برای صرفاً خواندن اطلاعات میتوان verify را غیرفعال کرد ولی توصیه نشده است).
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای امنیت بهتر از ssl.create_default_context استفاده کنید و با فراخوانی ctx.load_default_certs() و نگه داشتن verify_mode=ssl.CERT_REQUIRED به گواهیهای معتبر اعتماد کنید. از پارامتر server_hostname برای SNI هنگام wrap_socket استفاده کنید و زمانسنجی مناسب (timeout) را فراموش نکنید تا از قطع ناخواسته جلوگیری شود. برای استخراج دقیق گواهی از getpeercert(binary_form=True) استفاده کنید و در صورت نیاز از کتابخانه cryptography برای پارس x509 بهره ببرید. در نهایت استثناهای رایج مانند ssl.SSLError و socket.timeout را مدیریت کنید و اگر فقط قصد خواندن اطلاعات را دارید میتوانید verify را غیرفعال کنید، اما به امنیت آسیب میزند.
گزارش