TrashNotes

2025-04-21 07:17:54
пример bash-скрипта для CentOS 7, который комплексно проверяет HTTPS-доверие между двумя бэк-хостами с учётом DNS (включая CAA-записи), IP и SSL-сертификатов. В скрипте используются стандартные утилиты из репозитория CentOS 7: dig, openssl, grep, sed, date.

#!/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
← Previous Next →
Back to list