chocoding™

좌충우돌 엉망진창 코딩 성장 블로그

우분투 아파치 웹 서버 인증서 발급 받고 HTTPS 사용 하기

이 포스트에서는 Certbot을 이용해서 Let’s Encrypt (렛츠인크립트)에서 발급하는 인증서를 발급 받아 사이트에 적용하는 방법을 알아 보자. 쫄지 말자! 생각 보다 엄청 쉽다.

우분투 아파치 웹 서버 인증서 발급을 하기 위해서는 우분투에 웹 서비스가 동작 하고 있어야 한다. 아직 웹 서버가 없다면 우분투에 웹 서비스 설치 하기open_in_browser를 참조 한다.

“AWS EC2 서비스에 워드프레스를 위한 웹 서비스 환경 구축 하기” 목차
  1. 웹 서비스 패키지 설치 하기 (Apache HTTP Server, PHP, MySQL)open_in_browser
  2. Apache HTTP Server 환경 설정 하기
  3. 사이트 인증서 발급 받고 HTTPS 사용 하기

웹 서버에서 HTTPS를 사용하려면 인증 기관 (Certificate Authority)에서 인증서를 발급 받아야 하는데 Let’s Encrypt (렛츠인크립트)라는 인증기관에서 무료로 인증서를 발급 해주고 있다.

쉘 액세스 권한이 있는 대부분의 사용자는 Certbot ACME 클라이언트를 사용하는 것이 좋습니다. 다운타임 없이 인증서 발급 및 설치를 자동화할 수 있습니다. 또한 자가변성을 원하지 않는 사람들을 위한 전문적 모드도 갖추고 있습니다. 사용하기 쉽고, 많은 운영 체제에서 작동하며, 문서화가 매우 우수합니다. Certbot 웹 사이트 방문하기은(는) 운영 체제 및 웹 서버에 대한 사용자 지정 지침을 제공합니다.

Let’s Encrypt 시작하기 페이지에서…

렛츠인크립트 인증서를 발급 받기 위해서는 Certbot이라는 ACME1 클라이언트를 이용하라고 공식 사이트에서 말하고 있다. 그러면 Certbot를 이용해서 인증서를 발급 받아 보자.

사이트 인증서를 받기 위한 준비 사항

  • HTTP 사이트가 온라인에서 port 80으로 작동 중이어야 한다.
  • 웹 서버에 SSH 환경으로 접속할 수 있어야 하고 root 권한을 가지고 있어야 한다.
  • DNS 레코드를 변경할 수 있어야 한다

서버에 SSH로 접속

서버에 접속해서 관리자 권한을 얻는다

ShellScript
sudo su

Certbot 설치

Certbot 공식 홈페이지에서는 snap을 이용해서 설치 하라고 이야기 하고 있다.

Certbot 스냅은 x86_64, ARMv7 및 ARMv8 아키텍처를 지원합니다. 대부분의 사용자는 스냅을 통해 Certbot을 설치할 것을 강력히 권장하지만 여기에서 대체 설치 지침을 찾을 수 있습니다 .

손해 볼 건 없으니 snap으로 설치 하도록 한다. 만약 이미 apt 관리자로 설치 했다면 아래 명령어로 제거 한다.

ShellScript
apt remove certbot  #apt로 설치한 certbot 제거

그 다음 snap 관리자를 이용해서 certbot을 설치 한다.

ShellScript
snap install --classic certbot

Certbot 실행 준비

Certbot이 제대로 설치 되었는지 확인 하기 위해 아래 명령을 수행 한다.

ShellScript
ln -s /snap/bin/certbot /usr/bin/certbot  #심볼릭 링크를 만드는 명령

Certbot 실행

다음 명령 한 줄만 입력하면 인증서를 발급 받고 apache 구성을 자동으로 갱신해서 사이트에서 인증서를 제공하도록 하게 된다. (HTTPS 액세스가 가능해진다는 말)

ShellScript
certbot --apache

처음 인증서 발급을 받는 경우 이메일 입력, 약관 동의, 이메일 정보 동의 과정을 거치게 되고 도메인 선택 화면에서 번호를 입력하면 인증서 발급과 제공이 완료 된다. 화면에 나온 여러개의 도메인 발급 한꺼번에 하길 원하는 경우 번호 입력 없이 엔터만 입력하면 된다.
도메인을 등록하고 싶지 않은 경우엔 문자 ‘c’를 입력 한다.

실행 후 사이트에 다시 접속하여 HTTPS 접속 확인

자동 갱신 테스트

렛츠엔크립트에서 제공하는 인증서의 유효기간은 3개월이다. 그래서 3개월 마다 인증서 갱신을 해주어야 하는데 아래 명령어를 사용한다.

ShellScript
certbot renew --dry-run

Certbot은 고맙게도 이 인증서 갱신을 자동으로 알아서 해 준다. 다음 명령을 입력하면 자동 갱신 목록에 Certbot이 등록되어 있는 것을 볼 수 있다.

ShellScript
systemctl list-timers

생각보다 우분투(24.04)에서 HTTPS를 사용하는 것이 어렵지 않았다. 위 순서를 바꾸지 않고 그대로 따라 한다면 무난하게 인증서를 발급 받아 HTTPS를 사용할 수 있을 것이라 생각한다.

인증서 삭제

ShellScript
certbot delete

# 아래와 같이 어떤 도메인 인증서를 삭제할 건지 물어 온다. 선택하고 엔터.
Which certificate(s) would you like to delete?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: chocoding.kr
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1

원하는 도메인을 선택하고 Y를 선택하면 삭제 된다.

  1. Automatic Certificate Management Environment : 자동 인증 관리 환경 ↩︎