Linux

[Linux] SSL,TLS 인증서 만료일 체크하여 Mattermost 전송

IT-PAPA 2024. 4. 30. 06:13
728x90
반응형

아래 스크립트는 도메인,포트 형식의 목록을 사용하여 SSL 인증서의 만료일자를 확인하고, 갱신일이 30일 이하인 경우에 대한 정보를 Mattermost로 전송하도록 작성하였습니다.

#!/bin/bash

# 도메인과 포트 목록 (도메인,포트 형식으로 정의)
declare -A domains
domains["www.naver.com"]="443"
domains["example.com"]="443"
domains["google.com"]="443"

# 각 도메인,포트별로 SSL 인증서 정보를 가져오는 함수 정의
get_ssl_info() {
    local domain="$1"
    local port="$2"
    local expiry_date
    expiry_date=$(openssl s_client -connect "${domain}:${port}" -showcerts </dev/null 2>/dev/null | openssl x509 -noout -dates | grep "notAfter" | cut -d= -f2)
    echo "$expiry_date"
}

# 만료까지 남은 일수를 계산하는 함수 정의
days_until_expiration() {
    local expiry_date="$1"
    local current_date
    current_date=$(date +%s)
    local expiry_unix
    expiry_unix=$(date -d "$expiry_date" +%s)
    local remaining=$((expiry_unix - current_date))
    echo "$((remaining / 86400))"  # 일(day)로 변환
}

# 갱신일이 30일 이하인 도메인들을 문자열로 조합
message=""
for domain in "${!domains[@]}"; do
    port=${domains[$domain]}
    expiry_date=$(get_ssl_info "$domain" "$port")
    days_remaining=$(days_until_expiration "$expiry_date")
    
    if ((days_remaining <= 30)); then
        message+="도메인: $domain, 포트: $port, 만료일: $expiry_date, 남은 일수: $days_remaining\n"
    fi
done

# Mattermost API 호출 (여기서는 예시로 출력만 함)
# mattermost_url="https://your-mattermost-server.com/api/v4/posts"
# mattermost_token="your-mattermost-token"
# curl -X POST -H "Authorization: Bearer $mattermost_token" -d "message=$message" "$mattermost_url"

# 결과 출력
echo -e "$message"

위 스크립트는 도메인과 포트를 쉼표로 구분하여 사용합니다. 실제 Mattermost 서버 정보와 토큰을 사용하여 호출하시면 됩니다. 필요한 추가 작업이 있으시면 알려주세요!

728x90
반응형
LIST