Меню Затваряне

Проверка на сертификат

За да проверите дали коректно е инсталиран даден сертификат, било то за https (порт 443) или за друга услуга – например IMAP (порт 993), може да използвате следния скрипт, с име check_ssl.sh

#!/bin/bash
#
function check_certs () {
  if [ -z "$1" ]
  then
    echo "Please enter the domain to check. Example: check_ssl.sh domain.com 443"
    exit 1
  fi
  if [ -z "$2" ]
  then
    echo "Please enter the port to check. Example: check_ssl.sh domain.com 993"
    exit 1
  fi
  name="$1"
  port="$2"
  shift
  now_epoch=$( date +%s )
  dig +noall +answer $name | while read _ _ _ _ ip;
  do
    echo -n "SSL for: $name ($ip) on port: $port"
    expiry_date=$( echo | openssl s_client -showcerts -servername $name -connect $ip:$port 2>/dev/null | openssl x509 -inform pem -noout -enddate | cut -d "=" -f 2 )
    issuer=$( echo | openssl s_client -showcerts -servername $name -connect $ip:$port 2>/dev/null | openssl x509 -inform pem -noout -issuer | sed -e 's/, ST/\nST/g' -e 's/, O/\nO/g' -e 's/, CN/\nCN/g' |grep "O =" | cut -d '=' -f2 )
    echo -n " | Expire date: $expiry_date";
    expiry_epoch=$( date -d "$expiry_date" +%s )
    expiry_days="$(( ($expiry_epoch - $now_epoch) / (3600 * 24) ))"
    echo " | Left: $expiry_days days | Issuer:$issuer"
  done
}
check_certs $1 $2;

Задължително трябва да подадете както хост, който да бъде проверен, така и порт за услугата, която ще проверявате, например:

Проверка на HTTPS:

./check_ssl.sh google.com 443
SSL for: google.com (142.250.187.174) on port: 443 | Expire date: Nov  7 08:17:54 2022 GMT | Left: 65 days | Issuer: Google Trust Services LLC

Проверка на SMTP:

./check_ssl.sh smtp.gmail.com 465
SSL for: smtp.gmail.com (108.177.127.109) on port: 465 | Expire date: Nov  7 08:24:48 2022 GMT | Left: 65 days | Issuer: Google Trust Services LLC