ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅ ΡΠΊΡΠΈΠΏΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ΅, ΠΈ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎ.
ΠΠ½ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ 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 Π³ΠΎΠ΄, ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ² ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ