개요
`wget-ssl-debug-log`는 `wget`의 SSL 디버그 기능을 활성화하고, 이를 통해 생성되는 상세한 로그를 분석하여 SSL/TLS 통신 문제를 해결하는 데 도움을 줍니다. 일반적인 `wget` 사용 시에는 볼 수 없는 저수준의 SSL 핸드셰이크 정보, 인증서 체인 검증 과정, 암호화 스위트 협상 등의 데이터를 기록합니다.
주요 기능
- SSL/TLS 핸드셰이크 상세 로깅
- 인증서 유효성 검사 과정 추적
- 암호화 스위트 및 프로토콜 협상 정보 기록
- 네트워크 보안 문제 진단
주요 옵션
`wget-ssl-debug-log`는 내부적으로 `wget` 명령어를 사용하므로, `wget`의 다양한 옵션을 그대로 활용할 수 있습니다. 다음은 SSL 디버깅 시 특히 유용한 `wget` 옵션들입니다.
SSL/TLS 관련
출력/로깅
생성된 명령어:
명령어를 조합해 보세요.
설명:
`wget-ssl-debug-log` 명령어를 실행합니다.
위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.
사용 예시
`wget-ssl-debug-log`는 주로 특정 URL에 대한 SSL/TLS 연결 문제를 진단하는 데 사용됩니다. 다음은 몇 가지 일반적인 사용 예시입니다.
기본 SSL 디버그 로깅
wget-ssl-debug-log https://badssl.com/expired/
지정된 URL에 대해 상세한 SSL 디버그 로그를 생성합니다. 로그는 표준 출력으로도 표시됩니다.
특정 파일로 로그 저장
wget-ssl-debug-log https://example.com/ -o my_ssl_debug.log
디버그 로그를 별도의 파일로 저장합니다. (스크립트 구현에 따라 다름)
인증서 검증 무시 (주의)
wget-ssl-debug-log --no-check-certificate https://self-signed.badssl.com/
인증서 검증 오류가 발생할 때, `--no-check-certificate` 옵션을 사용하여 검증을 무시하고 연결을 시도하면서 디버그 정보를 얻을 수 있습니다. 이는 문제 진단에 유용하지만, 보안상 위험하므로 실제 운영 환경에서는 사용하지 마십시오.
설치
`wget-ssl-debug-log`는 표준 리눅스 배포판에 기본으로 포함된 명령어가 아닙니다. 일반적으로 `wget`을 소스 코드에서 컴파일할 때 특정 디버그 옵션을 활성화하거나, `wget`을 래핑하는 셸 스크립트를 직접 작성하여 사용합니다. 다음은 일반적인 접근 방식입니다.
방법 1: `wget` 소스 컴파일 (권장)
`wget`을 SSL 디버그 로깅을 위해 컴파일하려면, OpenSSL 라이브러리와 함께 `configure` 스크립트에 `--enable-debug` 옵션을 추가해야 합니다. 이 방법은 가장 상세한 SSL 디버그 정보를 제공합니다.
sudo apt update && sudo apt install -y build-essential libssl-dev
cd /tmp
wget https://ftp.gnu.org/gnu/wget/wget-1.21.4.tar.gz # 최신 버전 확인
tar -xzf wget-1.21.4.tar.gz
cd wget-1.21.4
./configure --with-ssl=openssl --enable-debug
make
sudo make install
예시: `wget` 소스 컴파일
방법 2: 셸 스크립트 작성
기존 `wget` 설치를 활용하여 SSL 디버그 로깅을 위한 셸 스크립트를 작성할 수 있습니다. 이 방법은 `wget`의 `--debug` 옵션과 `strace` 또는 `ltrace`와 같은 시스템 호출 추적 도구를 조합하여 사용합니다. 이 방법은 컴파일보다 간편하지만, 제공되는 디버그 정보의 깊이가 다를 수 있습니다.
#!/bin/bash
# wget-ssl-debug-log.sh
LOG_FILE="wget_ssl_debug_$(date +%Y%m%d_%H%M%S).log"
echo "[$(date)] Starting wget with SSL debug logging..."
echo "Log file: $LOG_FILE"
# wget의 --debug 옵션과 stderr 리다이렉션을 사용하여 상세 로그 기록
# OpenSSL 관련 환경 변수 설정 (필요시)
# 예시: 특정 URL에 대해 SSL 디버그 로깅
# 실제 사용 시에는 "$@"로 인자를 받아 사용
# OpenSSL 디버그 환경 변수 (OpenSSL 1.1.0 이상)
# export SSLKEYLOGFILE="ssl_key_log.txt" # TLS 마스터 키 로깅 (Wireshark 분석용)
# wget --debug 옵션 사용
wget --debug "$@" 2>&1 | tee -a "$LOG_FILE"
# strace를 사용하여 시스템 호출 추적 (선택 사항)
# strace -o "${LOG_FILE%.log}_strace.log" wget "$@"
echo "[$(date)] Debugging complete. Check $LOG_FILE for details."
예시: `wget-ssl-debug-log.sh` 스크립트
chmod +x wget-ssl-debug-log.sh
sudo mv wget-ssl-debug-log.sh /usr/local/bin/wget-ssl-debug-log
스크립트 실행 권한 부여 및 경로 이동
팁 & 주의사항
SSL 디버그 로깅은 매우 상세한 정보를 제공하므로, 로그 파일의 크기가 커질 수 있습니다. 문제 해결 후에는 디버그 모드를 비활성화하거나 로그 파일을 정리하는 것이 좋습니다.
로그 분석 팁
생성된 로그 파일에서 다음 키워드를 찾아보면 문제 해결에 도움이 됩니다.
- `ERROR`
- `FAIL`
- `certificate`
- `handshake`
- `protocol`
- `cipher`
- `peer`
보안 경고
`--no-check-certificate` 옵션은 보안 위험을 초래하므로, 문제 진단 목적으로만 사용하고 실제 운영 환경에서는 절대 사용하지 마십시오.
- `--no-check-certificate` 사용 시 데이터 가로채기 위험 증가
- 항상 유효한 인증서 사용 권장
OpenSSL 환경 변수 활용
OpenSSL 라이브러리 자체의 디버그 로깅을 활성화하려면 `SSLKEYLOGFILE` 환경 변수를 설정하여 TLS 마스터 키를 기록할 수 있습니다. 이 파일은 Wireshark와 같은 네트워크 분석 도구에서 암호화된 트래픽을 복호화하는 데 사용될 수 있습니다.
export SSLKEYLOGFILE="/tmp/ssl_key_log.txt"
wget-ssl-debug-log https://example.com/
# Wireshark에서 ssl_key_log.txt 파일을 사용하여 트래픽 복호화
TLS 마스터 키 로깅 예시