یک اسکریپت Node.js بنویسید که یک درخواست HTTPS به یک URL مشخص ارسال کند و اطلاعات گواهی سرور (CN، صادرکننده، تاریخ انقضاء) را نمایش داده و بررسی کند که گواهی معتبر است یا خیر.
29.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 05:27 0.0
برای حل این مسئله از ماژول داخلی https در Node.js استفاده کنید؛ با استفاده از https.request یا https.get به سرور متصل شده و از socket.tlsSocket یا socket.getPeerCertificate() اطلاعات گواهی را بگیرید. با بررسی فیلدهای valid_from و valid_to و مقایسه با تاریخ فعلی میتوانید وضعیت انقضاء را تعیین کنید؛ برای اعتبارسنجی hostname و chain اطمینان حاصل کنید گزینه rejectUnauthorized پیشفرض (true) فعال باشد. نکات: برای تست با گواهی self-signed میتوانید موقتاً NODE_TLS_REJECT_UNAUTHORIZED=0 تنظیم کنید اما در محیط تولید هرگز این کار را انجام ندهید، و خطاها را با try/catch یا رویداد error مدیریت کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای دریافت و نمایش اطلاعات گواهی در Node.js از https.request یا https.get استفاده کنید و پس از برقراری ارتباط با socket.getPeerCertificate() فیلدهای subject.CN، issuer و valid_from/valid_to را استخراج کنید. تاریخهای valid_from و valid_to را با تبدیل به شیء Date و مقایسه با تاریخ فعلی بررسی کنید تا وضعیت انقضا مشخص شود و توجه داشته باشید فرمتهای زمانی ممکن است نیاز به پارسینگ داشته باشند. برای اطمینان از صحت hostname و زنجیره اعتماد، گزینه پیشفرض rejectUnauthorized=true را نگه دارید و تنها در محیط تست موقتاً NODE_TLS_REJECT_UNAUTHORIZED=0 را استفاده کنید؛ هرگز در تولید از آن استفاده نکنید. خطاها را با event 'error' یا try/catch مدیریت کنید و در صورت نیاز اطلاعات بیشتر مثل full chain یا raw pem را از getPeerCertificate(true) دریافت کنید.
گزارش