무료 SSL 인증서 발급: 여러 파이썬 버전 사용 시 특정 버전으로 Certbot 실행하기

발행 읽는 시간 약 3 분

  • SSL
  • Certbot
  • Let's Encrypt
  • Python
  • Nginx
  • 서버관리

글 소개

시스템에 여러 파이썬 버전이 설치되어 있을 때, 특정 파이썬 버전을 사용하여 Let's Encrypt SSL 인증서를 발급받는 방법을 알아봅니다.

웹사이트에 HTTPS를 적용하려면 SSL 인증서가 필요합니다. Let's Encrypt는 무료로 SSL 인증서를 제공하는 인증 기관(CA)으로, Certbot을 통해 쉽게 인증서를 발급받을 수 있습니다.

하지만 시스템에 여러 파이썬 버전이 설치되어 있을 때, Certbot이 잘못된 파이썬 버전을 사용하면 오류가 발생할 수 있습니다. 이 글에서는 특정 파이썬 버전을 지정하여 Certbot을 실행하는 방법을 설명합니다.

문제 상황#

시스템에 파이썬 3.8, 3.9, 3.10 등 여러 버전이 설치되어 있고, 기본 certbot 명령어가 예상과 다른 파이썬 버전을 사용하는 경우가 있습니다.

Bash
# 기본 certbot 실행 시
certbot --nginx -d domain.com -d www.domain.com
# 오류 발생: Python version mismatch 또는 dependency 문제

해결 방법: 특정 파이썬 버전으로 Certbot 실행#

1. Certbot이 설치된 위치 확인#

먼저 Certbot이 어디에 설치되어 있는지 확인합니다.

Bash
which certbot
# 예: /usr/bin/certbot

2. Certbot의 실제 파이썬 경로 확인#

Certbot 스크립트의 첫 줄(shebang)을 확인하여 어떤 파이썬을 사용하는지 봅니다.

Bash
head -1 /usr/bin/certbot
# 예: #!/usr/bin/python3 또는 #!/usr/bin/env python3

3. 특정 파이썬 버전으로 직접 실행#

특정 파이썬 버전(예: Python 3.10)을 사용하여 Certbot을 실행합니다.

Bash
sudo python3.10 /usr/bin/certbot --version

이 명령어로 Certbot이 정상적으로 작동하는지 확인합니다.

4. SSL 인증서 발급#

특정 파이썬 버전으로 Certbot을 실행하여 SSL 인증서를 발급받습니다.

Bash
sudo python3.10 /usr/bin/certbot --nginx -d domain.com -d www.domain.com

명령어 설명:

  • sudo: 관리자 권한 필요
  • python3.10: Python 3.10 버전 사용
  • /usr/bin/certbot: Certbot 실행 파일 경로
  • --nginx: Nginx 웹서버 사용
  • -d domain.com: 도메인 지정 (여러 개 지정 가능)
  • -d www.domain.com: www 서브도메인도 포함

5. 인증서 발급 과정#

Certbot이 실행되면 다음 과정을 거칩니다:

  1. 이메일 입력: 인증서 만료 알림을 받을 이메일 주소
  2. 약관 동의: Let's Encrypt 서비스 약관 동의
  3. 도메인 검증: 도메인 소유권 확인 (HTTP-01 또는 DNS-01 챌린지)
  4. 인증서 발급: 검증 완료 후 인증서 발급
  5. Nginx 설정 자동 업데이트: Certbot이 Nginx 설정 파일을 자동으로 수정하여 HTTPS 적용

추가 옵션#

자동 갱신 설정#

SSL 인증서는 90일마다 갱신해야 합니다. 자동 갱신을 위해 cron 작업을 추가합니다.

Bash
# Certbot 자동 갱신 테스트
sudo python3.10 /usr/bin/certbot renew --dry-run

# Cron 작업 추가 (매일 오전 2시에 갱신 확인)
sudo crontab -e
# 다음 줄 추가:
0 2 * * * /usr/bin/python3.10 /usr/bin/certbot renew --quiet

특정 파이썬 버전을 기본값으로 설정#

매번 python3.10을 입력하는 것이 번거롭다면, 별칭(alias)을 만들 수 있습니다.

Bash
# ~/.bashrc 또는 ~/.zshrc에 추가
alias certbot-py310='sudo python3.10 /usr/bin/certbot'

# 사용
certbot-py310 --nginx -d domain.com -d www.domain.com

주의사항#

  1. 도메인 DNS 설정: 도메인이 서버 IP로 올바르게 설정되어 있어야 합니다.
  2. 포트 80/443 열기: HTTP(80)와 HTTPS(443) 포트가 열려있어야 합니다.
  3. Nginx 실행 중: Certbot이 Nginx 설정을 수정하므로 Nginx가 실행 중이어야 합니다.
  4. 도메인 접근 가능: 도메인으로 웹사이트에 접근할 수 있어야 Let's Encrypt가 검증할 수 있습니다.

문제 해결#

오류: "No module named 'certbot'"#

특정 파이썬 버전에 Certbot이 설치되어 있지 않은 경우:

Bash
# 해당 파이썬 버전으로 pip 설치
python3.10 -m pip install certbot certbot-nginx

# 또는 시스템 패키지 매니저 사용
sudo apt-get install python3.10-certbot python3.10-certbot-nginx

오류: "nginx: command not found"#

Nginx가 설치되어 있지 않은 경우:

Bash
sudo apt-get update
sudo apt-get install nginx

인증서 발급 실패#

  • 도메인 DNS가 올바르게 설정되었는지 확인
  • 방화벽에서 포트 80, 443이 열려있는지 확인
  • Nginx가 정상적으로 실행 중인지 확인

결론#

여러 파이썬 버전이 설치된 환경에서도 특정 파이썬 버전을 지정하여 Certbot을 실행할 수 있습니다. python3.10 /usr/bin/certbot 형식으로 실행하면 원하는 파이썬 버전을 사용할 수 있습니다.

Let's Encrypt를 통해 무료로 SSL 인증서를 발급받아 웹사이트에 HTTPS를 적용하세요!

참고 자료#

Follow · Ask · Work

이 글이 도움이 됐다면

짧은 작업 기록과 데모는 인스타그램에 올립니다. 만들고 싶은 것이 있다면 프로젝트 의뢰나 협업 제안도 편하게 보내 주세요.

글쓴이

파란여우

직접 만든 AI 앱·제품의 개발·배포를 공개하는 실전형 테크 크리에이터

파란여우 소개 Instagram @bluefox._.hi

이어서 보기

만들고 싶은 것이 있다면 프로젝트 의뢰로 알려 주세요.