앞서 설치한 LAMP 스택(웹 서버)에 보안 자물쇠(HTTPS)를 채우는 과정입니다.
요즘 웹 환경에서 HTTPS는 선택이 아닌 필수입니다. (구글 검색 순위 우대, 데이터 암호화 등)
가장 대중적이고 무료로 사용할 수 있는 Let’s Encrypt 인증서를 Certbot이라는 도구를 이용해 자동으로 설치하고 갱신하는 방법을 알려드립니다.
0. 환경 및 사전 요구 사항
- OS: Ubuntu 22.04 LTS
- 필수 조건: **도메인(Domain Name)**이 반드시 필요합니다.
- (예:
example.com이 서버의 공인 IP와 연결되어 있어야 합니다.) - IP 주소만으로는 발급받을 수 없습니다.
- (예:
- 권한:
sudo권한 사용자
1. Certbot 설치
SSL 인증서를 발급받고 자동으로 설정해 주는 봇(Bot)인 Certbot과 Apache용 플러그인을 설치합니다.
Bash
# 패키지 목록 업데이트 및 Certbot 설치
sudo apt update
sudo apt install certbot python3-certbot-apache -y
2. Apache 설정 확인 (가장 중요한 단계)
Certbot이 어떤 도메인에 인증서를 발급해야 할지 알 수 있도록, Apache 설정 파일에 도메인 이름이 정확히 명시되어 있어야 합니다.
Step 1: 설정 파일 편집
기본 설정 파일을 엽니다. (별도의 설정 파일을 만들었다면 해당 파일을여세요.)
Bash
sudo vi /etc/apache2/sites-available/000-default.conf
Step 2: ServerName 추가
파일 내용 중 DocumentRoot 아래나 근처에 ServerName과 ServerAlias를 찾아 수정하거나 추가합니다.
[수정 예시]
example.com 부분을 본인의 실제 도메인으로 바꾸세요.
Apache
<VirtualHost *:80>
# ... 기존 내용 ...
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
# 아래 두 줄을 추가/수정합니다.
ServerName <도메인_주소> (예: example.com)
ServerAlias www.<도메인_주소> (예: www.example.com)
# ... 기존 내용 ...
</VirtualHost>
Step 3: 적용 확인
설정에 오타가 없는지 검사하고 Apache를 재로드합니다.
Bash
# 문법 검사 (Syntax OK가 나와야 함)
sudo apache2ctl configtest
# Apache 재로드
sudo systemctl reload apache2
3. 방화벽 설정 확인
HTTPS는 443번 포트를 사용합니다. 이전 가이드에서 "Apache Full"을 허용했다면 이미 열려있지만, 혹시 모르니 확인합니다.
Bash
# HTTPS(443) 포트가 포함된 규칙 허용
sudo ufw allow "Apache Full"
# 불필요한 HTTP 전용 규칙 삭제 (선택 사항)
sudo ufw delete allow "Apache"
# 상태 확인
sudo ufw status
4. SSL 인증서 발급 및 적용 (자동화)
이제 마법의 명령어 하나로 인증서 발급부터 Apache 설정 변경까지 한 번에 처리합니다.
Bash
# Apache 플러그인을 사용하여 인증서 발급 요청
sudo certbot --apache
[설치 진행 과정 – 따라 하세요]
- Enter email address: 긴급 연락용 이메일 주소 입력 후 Enter.
- Terms of Service: 이용 약관 동의. Y 입력 후 Enter.
- Share Email: 이메일 공유 여부(선택). N 입력 후 Enter.
- Select domain: 인증서를 적용할 도메인 선택.
- 목록에 본인 도메인이 보이면 해당 번호를 입력하거나, 모두 적용하려면 그냥 Enter를 누르세요.
- (중요) Redirect HTTP to HTTPS:
- 질문: “Secure하지 않은 접속을 HTTPS로 리다이렉트 하시겠습니까?”
- 선택: 2번 (Redirect)을 선택하고 Enter. (모든 접속을 안전하게 강제합니다.)
5. 설치 검증
설치가 완료되었다면 브라우저를 열고 도메인 주소로 접속해 보세요.
- 주소:
http://example.com→https://example.com(자동 전환 확인) - 확인: 주소창 옆에 **자물쇠 아이콘(🔒)**이 보인다면 성공입니다!
[심층 테스트]
SSL 설정의 보안 등급을 확인하고 싶다면 아래 사이트에서 도메인을 입력해 보세요. (보통 A 등급이 나옵니다.)
- URL:
https://www.ssllabs.com/ssltest/
6. 자동 갱신 테스트 (유지 보수)
Let’s Encrypt 인증서의 유효 기간은 90일입니다. 하지만 Certbot이 설치되면서 자동으로 갱신 타이머(systemd timer)를 등록해 두었기 때문에 신경 쓸 필요가 없습니다.
자동 갱신이 잘 작동하는지 테스트만 한 번 해봅니다.
Bash
# 실제 갱신 없이 시뮬레이션만 수행 (Dry Run)
sudo certbot renew --dry-run
출력 결과에 Congratulations, all simulated renewals succeeded 메시지가 뜨면 평생 무료로 자동 갱신됩니다.
마무리 및 Tip 💡
- Tip 1: www 도메인 문제만약 example.com은 되는데 www.example.com이 안 된다면, DNS 설정(A 레코드)에 www가 누락되었거나, 위 Apache 설정(Step 2)에서 ServerAlias가 빠졌을 확률이 높습니다.
- Tip 2: 인증서 위치실제 인증서 파일은 /etc/letsencrypt/live/<도메인명>/ 디렉터리에 저장됩니다. (백업 시 참고하세요)






