Categories: Linux

Linux 使用 OpenSSL 指令檢查 TLS/SSL 憑證到期日教學與範例

介紹如何在 Linux 系統中使用 openssl 指令查詢網頁伺服器 TLS/SSL 憑證的有效期限。

透過網路檢查網站 TLS/SSL 憑證到期日

如果要透過網路檢查指定網站的 TLS/SSL 憑證有效期限,可以使用以下指令:

# 檢查 officeguide.cc 的 TLS/SSL 憑證有效期限
echo | openssl s_client -servername officeguide.cc -connect officeguide.cc:443 \
| openssl x509 -noout -dates
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = R3
verify return:1
depth=0 CN = officeguide.cc
verify return:1
DONE
notBefore=Mar 22 17:53:53 2021 GMT
notAfter=Jun 20 17:53:53 2021 GMT

若寫在指令稿中,可將伺服器與連接埠以變數的方式帶入,比較容易閱讀或修改:

# 檢查 officeguide.cc 的 TLS/SSL 憑證有效期限
SERVER=officeguide.cc
PORT=443
echo | openssl s_client -servername $SERVER -connect $SERVER:$PORT \
| openssl x509 -noout -dates

在本機檢查網站 TLS/SSL 憑證到期日

除了透過網路的方式之外,亦可直接在網頁伺服器上直接讀取憑證檔案,檢查網站 TLS/SSL 憑證使用期限:

# 檢查 TLS/SSL 憑證有效期限
sudo openssl x509 -enddate -noout -in /etc/letsencrypt/live/officeguide.cc/cert.pem
notAfter=Jun 20 17:53:53 2021 GMT

亦可從 fullchain.pem 來檢查:

# 檢查 TLS/SSL 憑證有效期限
openssl x509 -enddate -noout -in /etc/letsencrypt/live/officeguide.cc/fullchain.pem
notAfter=Jun 20 17:53:53 2021 GMT

以下指令稿可以將 TLS/SSL 憑證有效期限轉為標準的 ISO 格式日期,方便後續處理:

# 取得 TLS/SSL 憑證有效期限(轉為 ISO 格式日期)
CERT=/etc/letsencrypt/live/officeguide.cc/cert.pem
date --date="$(openssl x509 -enddate -noout -in $CERT | cut -d= -f 2)" --iso-8601
2021-06-21

檢查 TLS/SSL 憑證在指定時間點是否有效

openssl 指令搭配 -checkend 參數可以檢查 TLS/SSL 憑證在指定的時間點是否有效。例如檢查 TLS/SSL 憑證在 7 天後是否有效:

# 檢查 TLS/SSL 憑證在 7 天候是否有效
let SECONDS=7*24*60*60
if openssl x509 -checkend $SECONDS -noout -in /etc/letsencrypt/live/officeguide.cc/cert.pem
then
  echo "憑證在 7 天後還有效。"
else
  echo "憑證在 7 天後過期。"
fi
憑證在 7 天後還有效。

列出各網站 TLS/SSL 憑證有效期限

以下指令稿可以列出伺服器上各網站 TLS/SSL 憑證有效期限:

# 列出伺服器上各網站 TLS/SSL 憑證有效期限
for cert in /etc/letsencrypt/live/*/cert.pem; do
  printf '%s: %s\n' \
    "$(date --date="$(openssl x509 -enddate -noout -in "$cert" | cut -d= -f 2)" --iso-8601)" \
    "$cert"
done | sort
2021-06-21: /etc/letsencrypt/live/officeguide.cc/cert.pem
2021-07-12: /etc/letsencrypt/live/my.website.com/cert.pem

參考資料

Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

1 年 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

1 年 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

1 年 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

1 年 ago