Приведенный ниже скрипт можно использовать для получения подробной информации о сертификате, и его можно использовать локально или удаленно.
Он называется ssl_validate.sh, но вы можете скопировать его содержимое в новый файл скрипта с любым именем, используйте chmod +x, чтобы сделать его исполняемым, а затем используйте его со следующим синтаксисом:
./ssl_validate.sh (или любое другое выбранное вами имя скрипта) server.company.com:443, где “server.company.com” – это полное доменное имя (FQDN) хоста, который вы хотите проверить, а 443 – это порт, который он прослушивает, связанный с SSL-сертификатом.
Вы должны убедиться, что у вас есть путь к этому серверу и порту, например, через правила брандмауэра.
Скрипт выдаст результат, подобный следующему, чтобы отобразить наиболее важные детали SSL-сертификата:
server.company.com:443 ; SSL ; CN: (CN сертификата SSL) ; Subject (Subject сертификата SSL) ; Issuer: (Issuer сертификата SSL) ; notBefore: (Дата создания SSL-сертификата) ; notAfter: (Дата истечения срока действия SSL-сертификата) ; DaysUntilExpiration: (Дни, оставшиеся до истечения срока действия SSL-сертификата) ; Errors: (Любые ошибки, связанные с SSL-сертификатом)
Собственно скрипт:
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
Заключение
Если возникнут вопросы или комментарии, прошу написать в поле комментариев.
см. также:
- 🔐 Как проверить дату истечения срока действия сертификата TLS/SSL из командной строки
- 🔐 Как проверить срок действия сертификата SSL с OpenSSL
- testsl.sh – Проверка безопасности SSL, включая алгоритмы, протоколы и обнаружение ошибок
- 🔐 Как проверить SSL сертификат WEB сервера?
- 🔑 Как игнорировать ошибки недостоверенных и самоподписанных сертификатов в ssl-соединениях с curl
- Почему SSL так важен👨⚕️ Цель использования SSL-сертификатов
- 10 онлайн инструментов для тестирования SSL, TLS и последних уязвимостей
- 🐧 Как проверить шифрование TLS / SSL в любом месте на любом порту
- Как локально проверить SSL-сертификат
- #️⃣ 10 лучших бесплатных чекеров SSL на 2021 год, проверка установки сертификатов и уязвимостей