یک برنامه پایتون بنویس که به یک سرور 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 را غیرفعال کرد ولی توصیه نشده است).

توسط پژوهشگر در 202 روز قبل ساعت 03:03
دسته بندی ها: Python Python for beginner
reyhaneh در 202 روز قبل ساعت 07:38

برای امنیت بهتر از 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 را غیرفعال کنید، اما به امنیت آسیب می‌زند.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری