apache 설치 후 Let’s Encrypt 무료SSL/TLS 인증서 설치

Let’s Encrypt는 무료, 자동, 공개 SSL/TLS 인증서를 제공하는 서비스이며, Certbot은 이 인증서의 발급 및 갱신 과정을 자동화해주는 도구다.

1. Certbot PPA 추가 및 업데이트

Certbot의 최신 버전을 사용하기 위해 PPA(Personal Package Archive)를 추가하는 것이 좋습니다.

sudo add-apt-repository ppa:certbot/certbot
sudo apt update

2. Certbot 및 Apache 플러그인 설치

이제 Certbot과 Apache와의 연동을 위한 플러그인을 설치합니다.

sudo apt install certbot python3-certbot-apache -y

python3-certbot-apache 패키지는 Certbot이 Apache 서버 구성을 자동으로 조정할 수 있도록 도와줍니다.  

3. Apache 가상 호스트(Virtual Host) 설정 확인

Certbot이 올바르게 작동하려면, Apache 가상 호스트 설정 파일(*.conf 파일, 일반적으로 /etc/apache2/sites-available/)에 웹사이트의 ServerName 또는 ServerAlias 지시어가 올바르게 설정되어 있어야 합니다. 이 지시어는 Certbot이 인증서를 발급받을 도메인 이름을 식별하는 데 사용됩니다.

예시 (/etc/apache2/sites-available/your-domain.conf):

apache

<VirtualHost *:80>
    ServerAdmin webmaster@your-domain.com
    ServerName your-domain.com      # 실제 도메인으로 변경해주세요.
    ServerAlias www.your-domain.com # 실제 도메인으로 변경해주세요.
    DocumentRoot /var/www/html/your-domain # 실제 웹사이트 경로로 변경해주세요.
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

위 설정은 HTTPS를 적용할 도메인(예: your-domain.com)과 www.your-domain.com을 ServerName과 ServerAlias에 명시한 예시입니다.  Certbot 실행 전에 Apache 설정을 확인하시고, 변경사항이 있다면 Apache를 재시작해주세요.

sudo systemctl restart apache2

에러 발생시,

systemctl status apache2.service
sudo a2enmod proxy
sudo a2enmod proxy_http
# 다른 프록시 기능(예: 웹소켓)이 필요하다면 다음 모듈도 활성화할 수 있습니다.
# sudo a2enmod proxy_wstunnel
sudo a2enmod headers
sudo a2enmod rewrite
sudo systemctl restart apache2

4. SSL 인증서 발급

이제 Certbot을 사용하여 SSL 인증서를 발급받을 수 있습니다.

sudo certbot --apache

이 명령어를 실행하면 Certbot이 Apache 설정을 분석하고 다음과 같은 질문을 할 것입니다:

  • 이메일 주소 입력: 만료 알림 및 보안 관련 통지를 받을 이메일 주소를 입력합니다.
  • 약관 동의: Let’s Encrypt 서비스 약관에 동의합니다.
  • 도메인 선택: Certbot이 Apache 설정에서 찾은 도메인 목록이 표시됩니다. 이메일 주소 및 약관에 동의하면 목록이 나오는데, 인증서를 적용할 도메인을 선택하거나 모두 적용하려면 Enter를 누릅니다.
  • HTTP 리디렉션 설정: 웹사이트로의 HTTP(80) 접근을 HTTPS(443)로 자동 리디렉션할지 물어봅니다. ‘2: Redirect’를 선택하여 항상 HTTPS로 접속하도록 설정하는 것이 좋습니다.

성공적으로 완료되면, Certbot은 Apache 설정을 자동으로 업데이트하고 인증서를 설치했다는 메시지를 보여줄 것입니다.  

5. SSL 설치 확인

웹 브라우저를 열고 https://your-domain.com (실제 도메인 주소로 변경)으로 접속해 보세요. 주소창에 자물쇠 아이콘이 나타나고, 웹사이트가 HTTPS로 안전하게 연결되었음을 확인할 수 있습니다.

6. 자동 갱신 설정

Let’s Encrypt 인증서는 90일마다 갱신해야 합니다. Certbot은 이 갱신 과정을 자동으로 처리해주는 cron 작업이나 systemd 타이머를 자동으로 설정합니다.

갱신 프로세스가 올바르게 작동하는지 테스트하려면 다음 명령어를 실행할 수 있습니다:

sudo certbot renew --dry-run

이 명령어는 실제 갱신 없이 갱신 프로세스를 시뮬레이션합니다. 오류 없이 성공하면 자동 갱신이 올바르게 설정된 것입니다.

Ubuntu에 Apache 설치

우분투에 Apache를 설치하는 단계는 다음과 같다.

1. 패키지 목록 업데이트

가장 먼저, 시스템의 패키지 목록을 최신 상태로 업데이트하여 최신 버전의 Apache를 설치할 수 있도록 준비합니다.

bash

sudo apt update

2. Apache2 웹 서버 설치

이제 Apache2를 설치할 차례입니다. 다음 명령어를 사용하여 설치를 진행할 수 있습니다.

bash

sudo apt install apache2 -y

이 명령어는 apache2 패키지를 설치하며, -y 옵션은 설치 중 확인 메시지에 자동으로 ‘예’라고 응답하도록 합니다.  

3. Apache2 서비스 상태 확인

설치가 완료되면 Apache2 서비스가 제대로 실행되고 있는지 확인해야 합니다. 다음 명령어로 상태를 점검할 수 있습니다.

bash

sudo systemctl status apache2

정상적으로 실행 중이라면 ‘active (running)’ 메시지를 확인할 수 있습니다.

4. 방화벽 설정 (UFW)

우분투에서 UFW(Uncomplicated Firewall)를 사용하고 있다면, 외부에서 웹 서버에 접근할 수 있도록 HTTP(80번 포트) 및 HTTPS(443번 포트) 트래픽을 허용해야 합니다.

먼저, 사용 가능한 UFW 애플리케이션 프로파일을 확인합니다:

bash

sudo ufw app list

일반적으로 다음과 같은 프로파일을 볼 수 있습니다:

  • Apache (HTTP 80번 포트만 허용)
  • Apache Full (HTTP 80번 포트와 HTTPS 443번 포트 모두 허용)
  • Apache Secure (HTTPS 443번 포트만 허용)

원하는 프로파일을 선택하여 허용합니다. 대부분의 경우 Apache Full을 권장합니다.

bash

sudo ufw allow 'Apache Full'

변경사항을 적용하기 위해 UFW를 재로드하거나 활성화합니다:

bash

sudo ufw enable

(UFW가 비활성화된 경우에만 실행합니다.)

5. 웹 브라우저를 통한 설치 확인

Apache가 정상적으로 설치되었는지 최종 확인하는 단계입니다. 웹 브라우저를 열고 서버의 IP 주소를 입력하여 접속해 봅니다.

예: http://서버_IP_주소 

정상적으로 Apache가 설치되었다면 “Apache2 Ubuntu Default Page”라는 문구가 포함된 기본 웹페이지가 나타날 것입니다.

6. (선택 사항) 웹사이트 홈 디렉터리 변경

기본적으로 Apache의 웹사이트 홈 디렉터리는 /var/www/html입니다. 만약 다른 경로를 사용하고 싶다면 /etc/apache2/sites-available/000-default.conf 파일을 수정하여 변경할 수 있습니다.  

파일을 열고 DocumentRoot 설정을 변경한 후 Apache 서비스를 재시작하면 됩니다.

bash

sudo nano /etc/apache2/sites-available/000-default.conf

DocumentRoot /var/www/html 부분을 원하는 경로로 변경하고 저장한 후 Apache를 재시작합니다.

bash

sudo systemctl restart apache2

이 단계들을 통해 우분투 시스템에 Apache 웹 서버를 성공적으로 설치하고 구성하실 수 있다

아마존 AWS 프리티어 계정 종료후 새 계정으로 이전하는 방법

LINUX/Ubuntu 환경에서 1년 마다 이전하는 방법을 적어봅니다.

  1. 기존 프러티어 인스턴스에서 AMI 생성 및 공유
  2. 새 계정에서 AMI 공유 선택후 인스턴스 시작
  3. 기존 계정의 Route 53에 등록된 도메인이나 호스팅영역을 이전

다른 AWS 계정으로 이전

다른 AWS 계정으로 EC2 인스턴스를 이전하려면, 원본 계정에서 AMI를 생성한 후 대상 계정과 공유하는 방법을 사용한다.

  • AMI 공유 및 이전 단계:
    1. 원본 계정 (A 계정)에서 AMI 생성 및 공유:
      • 위 1단계와 같이 원본 계정에서 EC2 인스턴스의 AMI를 생성합니다.
      • 생성된 AMI를 선택하고 ‘작업’ > ‘AMI 권한 수정’을 선택합니다.
      • ‘공유’ 탭에서 ‘AWS 계정 추가’를 선택하고 대상 계정의 AWS 계정 ID를 입력합니다. ‘추가’ 버튼을 클릭하여 공유를 완료합니다 .
      • 이렇게 하면 원본 계정의 AMI가 대상 계정과 공유됩니다 .
    2. 대상 계정 (B 계정)에서 AMI 사용:
      • 대상 계정으로 로그인합니다.
      • EC2 대시보드에서 좌측 메뉴의 ‘AMI’로 이동합니다.
      • ‘개인 이미지’ 드롭다운 메뉴에서 ‘나와 공유된 이미지’를 선택합니다. 공유된 AMI가 목록에 나타납니다.
      • 해당 AMI를 선택하고 ‘인스턴스 시작’ 버튼을 클릭하여 새로운 EC2 인스턴스를 시작합니다 .

호스팅 영역 이전

새 계정에서 호스팅 영역을 새롭게 생성한다. 이 때 이전하는 도메인의 호스팅 영역에 기본적으로 생성되는 레코드인 SOA, NS를 확인한다. 이후 나머지 A레코드들을 수동으로 추가한다.

  • 생성된 NS 레코드 값을 기존 도메인 회사에 공유 및 편집 단계:
    1. hosting.kr에 등록된 기존 도메인의 NS 리스트 4개를 수정하여 변경
    2. 기존 계정의 나머지 A 레코드들을 복사하여 subdomain명, IP주소에 입력하여 수정한다.
    3. 기존 호스팅 영역은 삭제한다.
    4. URL 연결이 안된다면, 새 계정의 보안그룹을 수정한다.
error: Content is protected !!