مدیر سایت وظیفه دارد بعد از خرید SSL به طور دورهای و منظم، تاریخ انقضای گواهینامههای TLS / SSL را چک کند. چون منقضی شدن این گواهینامه ها باعث سردرگمی و بروز مشکل برای کاربران سایت میشود. با توجه به اهمیت موضوع، قصد داریم تا نحوه تشخیص تاریخ انقضای SSL یا TLS را به شما آموزش دهیم. تعیین این تاریخ با استفاده از فایل گواهی رمزنگاری شده PEM و یا نام دامنه یا وب سایت در سیستم های یونیکسی، BSD، لینوکس و macOS انجام میگیرد.
در ادامه این مطلب از مجله تخصصی مبین هاست، نحوه تعیین چنین تاریخی را آموزش میدهیم.
پیدا کردن تاریخ انقضای SSL از طریق خط فرمان
برای بررسی تاریخ انقضای گواهی SSL، باید از کلاینت خط فرمان OpenSSL استفاده کنید. این کلاینت اطلاعات کاملی در خصوص تاریخ انقضا، تاریخ اعتبار، صادرکننده گواهی TLS / SSL و سایز جزئیات را نمایش میدهد. برای به دست آوردن چنین اطلاعاتی، برنامه Terminal را باز کرده و دستور زیر را در آن اجرا کنید.
openssl s_client -servername {SERVER_NAME} -connect {SERVER_NAME}:{PORT} | openssl x509 -noout -dates echo | openssl s_client -servername {SERVER_NAME} -connect {SERVER_NAME}:{PORT} | openssl x509 -noout -dates
گزینه های دستور openssl
ابزار کاربردی Openssl، بیشتر برای تشخیص سرورهای TLS و SSL بکار میرود. در این ابزار، گزینههای خط فرمان زیر وجود دارد:
- s_client: این دستور برای پیادهسازی یک کلاینت عمومی SSL/TLS استفاده میشود تا از طریق آن، به میزبان ریموت وصل شود.
- servername $ DOM: این گزینه برای تنظیم پسوند TLS SNI (نام نشانگر) بر روی مقدار داده شده در پیام ClientHello استفاده میشود.
- connect $ DOM: $PORT: برای مشخص کردن پورت اختیاری ($ DOM) و میزبان ($ PORT) و اتصال به آن استفاده میشود.
- x۵۰۹: وظیفه اجرای امضای گواهی و برنامه نمایش را بر عهده دارد.
- noout: برای جلوگیری از خروج نسخه رمزنگاری شده گواهی استفاده میشود.
- dates: این گزینه وظیفه چاپ تاریخ شروع و انقضای گواهی SSL یا TLS را بر عهده دارد.
- پیدا کردن تاریخ انقضا گواهی SSL از طریق فایل گواهی رمزگذاری شده PEM.
برای تشخیص زمان انقضای گواهینامه SSL باید فایل گواهی را جستجو کنید.
openssl x509 -enddate -noout -in {/path/to/my/my.pem} openssl x509 -enddate -noout -in /etc/nginx/ssl/www.cyberciti.biz.fullchain.cer.ecc openssl x509 -enddate -noout -in /etc/nginx/ssl/www.nixcraft.com.fullchain.cer
notAfter=Dec 29 23:48:42 2020 GMT
بر اساس نتایج جستجو، میتوان بررسی کرد که گواهی مورد نظر در یک بازه زمانی مشخص منقضی میشود یا خیر؟ مثلاً نتایج جستجو مشخص میکند که تا ۷ روز آینده (۶۰۴۸۰۰ ثانیه) گواهی مورد نظر اعتبار دارد یا خیر؟
openssl x509 -enddate -noout -in my.pem -checkend 604800
# Check if the TLS/SSL cert will expire in next 4 months #
openssl x509 -enddate -noout -in my.pem -checkend 10520000
تشخیص تاریخ انقضا گواهی SSL از طریق Shell script و فایل alert sysadmin و crt
در ادامه، یک نمونه از shell script را آوردهایم:
#!/bin/bash
# Purpose: Alert sysadmin/developer about the TLS/SSL cert expiry date in advance
# Author: Vivek Gite {https://www.cyberciti.biz/} under GPL v2.x+
# -------------------------------------------------------------------------------
PEM="/etc/nginx/ssl/letsencrypt/cyberciti.biz/cyberciti.biz.fullchain.cer"
# ۷ days in seconds
DAYS="604800"
# Email settings
_sub="$PEM will expire within $DAYS (7 days)."
_from="system-account@your-dommain"
_to="sysadmin@your-domain"
_openssl="/usr/bin/openssl"
$_openssl x509 -enddate -noout -in "$PEM" -checkend "$DAYS" | grep -q 'Certificate will expire'
# Send email and push message to my mobile
if [ $? -eq 0 ]
then
echo "${_sub}"
mail -s "$_sub" -r "$_from" "$_to" <<< "Warning: The TLS/SSL certificate ($PEM) will expire soon on $HOSTNAME [$(date)]"
# See https://www.cyberciti.biz/mobile-devices/android/how-to-push-send-message-to-ios-and-android-from-linux-cli/ #
source ~/bin/cli_app.sh
push_to_mobile "$0" "$_sub. See $_to email for detailed log. -- $HOSTNAME " >/dev/null
fi
امکان استفاده از ابزار خط فرمان رایگان testssl shell script وجود دارد. این ابزار موارد مختلفی مثل پروتکل ها، موارد مرتبط با رمزنگاری و سرویس سرور های مورد استفاده برای پشتیبانی از رمزهای TLS/SSL را مورد بررسی قرار میدهد. برای بارگیری و اجرای این ابزار، از دستورهای زیر استفاده کنید.
wget https://testssl.sh/testssl.sh
chmod +x testssl.sh
testssl.sh --fast --parallel https://www.cyberciti.biz/
روش بعدی، اجرای اسکریپت ssl-cert-check است. این ابزار برای اطلاع از انقضای اعتبار گواهی SSL استفاده میشود و در اصل یک Bourne shell script است. شیوه طراحی این اسکریپت به گونهای است که از طریق cron اجرا میشود. پس میتواند هشدارها را با nagios ثبت کرده و یا از طریق ایمیل ارسال کند.
در صورتی که با توجه به توضیحات فوق همچنان موفق به تشخیص تاریخ انقضای گواهی SSL خود نشدید میتوانید با کارشناسان ما در شرکت مبین هاست تماس بگیرید تا در اسرع وقت شما را در این زمینه راهنمایی کنند.