67 Nguyễn Thị Định, Phường An Hải, TP. Đà Nẵng
Hướng dẫn

Hướng dẫn kiểm tra ngày hết hạn của chứng chỉ TLS/SSL bằng dòng lệnh

Hướng dẫn kiểm tra ngày hết hạn của chứng chỉ TLS/SSL bằng dòng lệnh
Chia sẻ

Làm sao tôi có thể kiểm tra ngày hết hạn của chứng chỉ TLS/SSL bằng dòng lệnh hoặc bằng shell scripts. Hôm nay chúng ta sẽ cùng tìm hiểu cách xác định ngày hết hạn của chứng chỉ TLS/SSL từ một file chứng chỉ PEM được mã hoá và từ...

Mục lục [Ẩn]

Sử dụng OpenSSL

Để kiểm tra ngày hết hạn của chứng chỉ SSL, chúng ta sẽ sử dụng công cụ OpenSSL. OpenSL cung cấp cho chúng ta những thông tin như ngày cấp, ngày hết hạn, người cấp chứng chỉ, và nhiều hơn thế
Mở Terminal và gõ vào dòng lệnh sau

$ 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

Ví dụ tôi muốn kiểm tra cho trang web www.nixcraft.com thì chúng ta sẽ nhập như sau

DOM="www.nixcraft.com" PORT="443" openssl s_client -servername $DOM -connect $DOM:$PORT \ | openssl x509 -noout -dates

Chúng ta sẽ thu được output như dưới

depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3 verify return:1 depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3 verify return:1 depth=0 CN = www.nixcraft.com verify return:1 notBefore=Sep 29 23:10:07 2020 GMT notAfter=Dec 28 23:10:07 2020 GMT

Sử dụng thêm câu lệnh echo để không phải bấm Ctrl + C

DOM="www.cyberciti.biz" PORT="443" ## note echo added ## echo | openssl s_client -servername $DOM -connect $DOM:$PORT \ | openssl x509 -noout -dates


Hiểu về các tuỳ chọn của câu lệnh OpenSSL

  • s_client : Câu lệnh s_client thực hiện như một SSL/TLS client bình thường bằng cách kết nối tới remote host sử dụng SSL/TLS
  • -servername $DOM : Thiết đặt phần mở rộng TLS SNI (Server Name Indication) trong tin nhắn ClientHello để gán gái trị
  • -connect $DOM:$PORT : Chỉ định host ($DOM) và port ($PORT) để kết nối tới
  • x509 : Khởi chạy công cụ hiển thị và kí chứng chỉ
  • -noout : Ngăn việc xuất ra bản mã hoá của chứng chỉ
  • -dates : In ra ngày bắt đầu và ngày hết hạn của một chứng chỉ TLS hoặc SSL
Tìm ngày hết hạn từ file chứng chỉ PEM được mã hoá

Các bạn sử dụng các câu lệnh sau

$ 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

Ngoài ra các bạn có thể “dự đoán” ngày hết hạn. Ví dụ như câu lệnh dưới để “đoán xem” sau 7 ngày (604800 giây) chứng chỉ này có hết hạn hay chưa

$ openssl x509 -enddate -noout -in my.pem -checkend 604800
Shell script để xác định ngày hết hạn từ file crt và cảnh báo tới sysadmin
#!/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" # 7 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
Sử dụng testssl Script
$ wget https://testssl.sh/testssl.sh $ chmod +x testssl.sh $ testssl.sh --fast --parallel https://www.cyberciti.biz/
Chia sẻ

Bài viết liên quan

Tối ưu chi phí hạ tầng: chọn đúng cấu hình, thuê theo nhu cầu

Tối ưu chi phí hạ tầng: chọn đúng cấu hình, thuê theo nhu cầu

Cách giảm chi phí hạ tầng hợp lý: chọn đúng cấu hình (right-sizing), thuê theo nhu cầu, kết hợp dịch vụ và rà soát tài nguyên định kỳ mà không ảnh hưởng vận hành

Cách săn khuyến mãi VPS/máy chủ, tránh bẫy giá rẻ

Cách săn khuyến mãi VPS/máy chủ, tránh bẫy giá rẻ

Cách tận dụng khuyến mãi VPS và máy chủ hợp lý, đọc kỹ điều kiện gia hạn và nhận biết bẫy giá rẻ ảnh hưởng chất lượng dịch vụ

Chọn nhà cung cấp VPS/máy chủ: tiêu chí cần kiểm tra

Chọn nhà cung cấp VPS/máy chủ: tiêu chí cần kiểm tra

Các tiêu chí chọn nhà cung cấp VPS và máy chủ: uptime/SLA, hạ tầng data center, peering, hỗ trợ kỹ thuật và chính sách hoàn tiền, kèm cách đọc cam kết dịch vụ

Phần mềm mã nguồn mở thay thế để tiết kiệm bản quyền

Phần mềm mã nguồn mở thay thế để tiết kiệm bản quyền

Gợi ý các phần mềm mã nguồn mở thay thế giải pháp có phí cho máy chủ: hệ điều hành, cơ sở dữ liệu, web server, control panel và ảo hóa, kèm lưu ý chi phí vận hành

So sánh bản quyền control panel: cPanel, DirectAdmin, Plesk

So sánh bản quyền control panel: cPanel, DirectAdmin, Plesk

So sánh cPanel, DirectAdmin và Plesk về tính năng, hệ điều hành hỗ trợ và chi phí bản quyền, kèm gợi ý chọn control panel theo số website và nhu cầu

Các loại bản quyền Windows Server và cách chọn cho đúng

Các loại bản quyền Windows Server và cách chọn cho đúng

Hiểu cấp phép Windows Server theo core, CAL và các kênh OEM/Volume/CSP, phân biệt Standard và Datacenter để chọn bản quyền phù hợp và hợp lệ