#!/bin/bash
Хосты для проверки
HOSTS=("host1.example.com" "host2.example.com")
Функция проверки CAA-записей через dig
check_caa() {
local domain=$1
echo "Проверка CAA записей для $domain:"
dig +short CAA $domain | while read -r line; do
echo " $line"
done
if ! dig +short CAA $domain | grep -q .; then
echo " CAA записи отсутствуют, любые CA могут выдавать сертификаты"
fi
echo
}
Функция проверки IP-адресов DNS
check_dns_ip() {
local domain=$1
echo "IP-адреса для $domain:"
dig +short A $domain
dig +short AAAA $domain
echo
}
Функция проверки SSL-сертификата через openssl
check_ssl_cert() {
local domain=$1
local port=443
echo "Проверка SSL-сертификата для $domain:$port"
Получаем сертификат
cert=$(echo | openssl s_client -connect ${domain}:${port} -servername ${domain} 2>/dev/null | \
sed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p')
if [[ -z "$cert" ]]; then
echo " Ошибка: не удалось получить сертификат"
echo
return
fi
Выводим основные данные сертификата
echo "$cert" | openssl x509 -noout -subject -issuer -dates -serial -fingerprint
Проверяем цепочку сертификатов (только локально, без проверки CA в сети)
echo "$cert" | openssl verify -CAfile /etc/pki/tls/certs/ca-bundle.crt /dev/stdin 2>&1 | \
sed 's/^/ /'
echo
}
Основной цикл по хостам
for host in "${HOSTS[@]}"; do
echo "=== Проверка хоста: $host ==="
check_dns_ip "$host"
check_caa "$host"
check_ssl_cert "$host"
done
[file-name 000111_2025-04-21_07-17-54.txt]