✏️ Крупицы знаний🌚 Общие статьиСкрипт для проверки данных SSL-сертификата В этой статье о скрипте ssl_validate.sh. Он нужен для получения подробной информации о сертификате SSL и его можно использовать как локально, так и удаленно.
Можно скопировать содержимое скрипта в новый файл с любым именем. Для этого используйте chmod + x, чтобы сделать его исполняемым, а затем используем его с этим синтаксисом:
./ssl_validate.sh имя скрипта) server.company.com:443
— server.company.com → полное доменное имя (FQDN) хоста, который вы хотите проверить
— 443 → это порт, связанный с SSL-сертификатом, который он прослушивает.
Важно: вы должны убедиться, что у вас есть путь к этому серверу и порту, например, через правила брандмауэра.
Вот сам скрипт:
Copy delim=" ; "
export delim
serverport=${1}
export serverport
echo "#${serverport}"
date_today=$(date +%F)
datediff() {
d1=$(date -d "$1" +%s)
d2=$(date -d "$2" +%s)
echo $(( (d1 - d2) / 86400 )) days
}
export -f datediff
sslscan() {
local sp=${1}
tls_content=$(echo "Q" | openssl s_client -showcerts -connect ${serverport} 2>&1)
if [[ "$?" == 0 ]]; then
tls_errors=$(echo "${tls_content}" | grep -i error )
tls_cert_subject=$(echo "${tls_content}" | openssl x509 -noout -subject )
tls_cert_issuer=$(echo "${tls_content}" | openssl x509 -noout -issuer )
tls_cert_cn=$(echo "${tls_content}" | openssl x509 -noout -subject | sed -e "s/.*CN=\([^\/]*\).*/\1/" )
tls_cert_dates=$(echo "${tls_content}" | openssl x509 -noout -dates )
tls_cert_notafter_date=$(echo "${tls_cert_dates}" | grep notAfter |sed -e "s/notAfter=//" | tr -d '\n')
tls_cert_notbefore_date=$(echo "${tls_cert_dates}" | grep notBefor |sed -e "s/notBefore=//" | tr -d '\n')
tls_cert_datediff=$(datediff "${tls_cert_notafter_date}" "${date_today}")
echo -n "${serverport} ${delim} SSL"
echo -n " ${delim} CN:"
echo -n " ${tls_cert_cn}"
echo -n " ${delim} Subject:"
echo -n " ${tls_cert_subject}"
echo -n " ${delim} Issuer:"
echo -n " ${tls_cert_issuer}"
echo -n " ${delim} notBefore:"
echo -n " ${tls_cert_notbefore_date}"
echo -n " ${delim} notAfter:"
echo -n " ${tls_cert_notafter_date}"
echo -n " ${delim} DaysUntilExpiration:"
echo -n " ${tls_cert_datediff}"
echo -n " ${delim} Errors:"
echo -n " ${tls_errors}"
echo
else
tls_errors=$(echo "${tls_content}" | tr '\n' '/' | tr ' ' '_' )
status="ERROR: ${tls_errors}"
echo -n "${serverport} ${delim} ${status}"
echo
fi
}
export -f sslscan
timeout 3 bash -c "sslscan ${serverport}"
if [[ $? != 0 ]]; then
echo -n "${serverport} ${delim} ERROR: CONNECTION_TIMED_OUT"
echo
fi
Скрипт выдаст результат, чтобы отобразить наиболее важные детали SSL-сертификата. Вот пояснение:
server.company.com:443 ; SSL ; CN: (CN сертификата SSL) ; Subject (Subject сертификата SSL) ; Issuer: (Issuer сертификата SSL) ; notBefore: (Дата создания SSL-сертификата) ; notAfter: (Дата истечения срока действия SSL-сертификата) ; DaysUntilExpiration: (Дни, оставшиеся до истечения срока действия SSL-сертификата) ; Errors: (Любые ошибки, связанные с SSL-сертификатом).