LinuxTechnology

[Ubuntu 22.04] Apache 무료 SSL 인증서(Let’s Encrypt) 완벽 적용 가이드

15views

앞서 설치한 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 아래나 근처에 ServerNameServerAlias를 찾아 수정하거나 추가합니다.

[수정 예시]

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

[설치 진행 과정 – 따라 하세요]

  1. Enter email address: 긴급 연락용 이메일 주소 입력 후 Enter.
  2. Terms of Service: 이용 약관 동의. Y 입력 후 Enter.
  3. Share Email: 이메일 공유 여부(선택). N 입력 후 Enter.
  4. Select domain: 인증서를 적용할 도메인 선택.
    • 목록에 본인 도메인이 보이면 해당 번호를 입력하거나, 모두 적용하려면 그냥 Enter를 누르세요.
  5. (중요) Redirect HTTP to HTTPS:
    • 질문: “Secure하지 않은 접속을 HTTPS로 리다이렉트 하시겠습니까?”
    • 선택: 2번 (Redirect)을 선택하고 Enter. (모든 접속을 안전하게 강제합니다.)

5. 설치 검증

설치가 완료되었다면 브라우저를 열고 도메인 주소로 접속해 보세요.

  • 주소: http://example.comhttps://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/<도메인명>/ 디렉터리에 저장됩니다. (백업 시 참고하세요)