반응형
GoDaddy에서 제공하는 API를 활용해 Certbot으로 SSL 인증서를 자동 갱신하는 방법을 소개합니다. 아래 예시는 실제 환경에 적용할 때 개인 정보를 반드시 수정해야 합니다.
사전 준비사항
1. GoDaddy API Key 및 Secret 발급
- GoDaddy Developer 사이트에 접속하여 API 키와 시크릿을 발급받습니다.
- Test(테스트)용과 Production(실제 운영)용 중 선택 가능합니다.
2. 도메인 준비
- GoDaddy에서 이미 도메인을 관리하고 있어야 합니다.
- 이 가이드에서는
example.com
도메인을 예시로 사용합니다.
Certbot 및 dns-godaddy 플러그인 설치
리눅스 환경(도커 또는 VM)에서 다음 명령어를 실행합니다:
apk add py3-pip python3-dev
pip install certbot-dns-godaddy
플러그인 설치 확인:
certbot plugins
GoDaddy 자격증명 파일 생성
- 자격증명 파일 생성:
mkdir -p /root/.secrets
echo "dns_godaddy_key = YOUR_API_KEY" >> /root/.secrets/godaddy.ini
echo "dns_godaddy_secret = YOUR_API_SECRET" >> /root/.secrets/godaddy.ini
- 파일 권한 설정:
chmod 600 /root/.secrets/godaddy.ini
Certbot으로 인증서 발급
다음 명령어로 와일드카드 SSL 인증서를 발급받습니다:
certbot certonly \
--authenticator dns-godaddy \
--dns-godaddy-credentials /root/.secrets/godaddy.ini \
-d example.com \
-d '*.example.com' \
-m admin@example.com \
--agree-tos \
--dns-godaddy-propagation-seconds 60
주요 옵션 설명
-d example.com -d '*.example.com'
: 메인 도메인과 서브도메인 지정-m admin@example.com
: 인증서 알림 수신 이메일--dns-godaddy-propagation-seconds 60
: DNS 전파 대기 시간 설정
자동 갱신 스크립트 예시
Kubernetes 환경을 위한 auto_certbot.sh
#!/bin/ash
# auto_certbot.sh
# Godaddy 인증 파일 생성
mkdir /root/.secrets
echo 'dns_godaddy_key=YOUR_API_KEY' > /root/.secrets/godaddy.ini
echo 'dns_godaddy_secret=YOUR_API_SECRET' >> /root/.secrets/godaddy.ini
# Certbot 및 플러그인 설치
apk add py3-pip python3-dev
pip install certbot-dns-godaddy
# 기존 인증서 정리 (필요 시)
rm -rf /etc/letsencrypt/archive/example.com
rm -rf /etc/letsencrypt/live/example.com
# 인증서 발급
certbot certonly \
--authenticator dns-godaddy \
--dns-godaddy-credentials /root/.secrets/godaddy.ini \
-d example.com \
-d '*.example.com' \
-m admin@example.com \
--agree-tos \
--dns-godaddy-propagation-seconds 60
인증서 복사 스크립트 auto_getting_ssl.sh
#!/bin/zsh
# auto_getting_ssl.sh
podName=$1
certFolderName=$2
kubectl cp $podName:/etc/letsencrypt/archive/$certFolderName/cert1.pem ./cert.pem
kubectl cp $podName:/etc/letsencrypt/archive/$certFolderName/chain1.pem ./chain.pem
kubectl cp $podName:/etc/letsencrypt/archive/$certFolderName/fullchain1.pem ./fullchain.pem
kubectl cp $podName:/etc/letsencrypt/archive/$certFolderName/privkey1.pem ./privkey.pem
Kubernetes 환경에서 실행
# auto_certbot.sh 스크립트를 Pod에 전달 및 실행
cat ./auto_certbot.sh | kubectl exec -it <YOUR_POD_NAME> -- ash
# 호스트로 인증서 파일 복사
./auto_getting_ssl.sh <YOUR_POD_NAME> example.com
크론탭을 이용한 자동 갱신
3개월마다 인증서를 자동으로 갱신하려면 다음과 같이 크론탭을 설정합니다:
crontab -e
크론탭 설정:
0 3 1 * * /bin/bash /root/auto_certbot.sh && /bin/bash /root/auto_getting_ssl.sh <YOUR_POD_NAME> example.com >> /var/log/ssl_renewal.log 2>&1
주의사항
- API 키와 시크릿은 항상 안전하게 관리하세요.
- 실제 운영 환경에서는 인증서 파일을 Kubernetes Secret이나 ConfigMap으로 관리하는 것이 좋습니다.
DNS 인증 방식을 사용하면 HTTP/HTTPS 포트 문제 없이 SSL 인증서를 쉽게 관리할 수 있습니다. 궁금한 점이 있다면 댓글로 문의해주세요.
728x90
반응형
BIG
'Programming > 환경셋팅' 카테고리의 다른 글
개발자용 폰트2 - NERD Font - D2Coding NERD FONT (2) | 2025.02.18 |
---|---|
Huggingface 모델을 Ollama에 등록하기 (0) | 2025.01.20 |
MacOS: Docker 에서 GPU 사용 (0) | 2025.01.14 |
무료 SSL 인증서: certbot 사용하기 (2) | 2024.01.04 |
neo-vim 설치 - CoC, Python - 실시간자동완성 적용 (3) | 2023.05.27 |
댓글