# Скрипт для проверки данных SSL-сертификата

Можно скопировать содержимое скрипта в новый файл с любым именем. Для этого используйте chmod + x, чтобы сделать его исполняемым, а затем используем его с этим синтаксисом:

./ssl\_validate.sh имя скрипта) server.company.com:443

— server.company.com → полное доменное имя (FQDN) хоста, который вы хотите проверить\
— 443 → это порт, связанный с SSL-сертификатом, который он прослушивает.

> Важно: вы должны убедиться, что у вас есть путь к этому серверу и порту, например, через правила брандмауэра.

#### Вот  сам скрипт: <a href="#sam-skript" id="sam-skript"></a>

```
 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-сертификатом).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://notes.kraken-security.ru/kraken/krupicy-znanii/obshie-stati/skript-dlya-proverki-dannykh-ssl-sertifikata.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
