CentOS 아파치 워드프레스 SSL(HTTPS) 설정 가이드북

2026. 6. 23. 00:20Unix & Linux

반응형

이 가이드는 CentOS 서버에서 **Certbot(Let's Encrypt)**을 이용하여 무료 SSL 인증서를 발급받고, 아파치 가상 호스트(VirtualHost) 설정을 올바르게 맞추는 표준 순서입니다.
1단계: 필수 패키지 및 Certbot 설치
가장 먼저 아파치 SSL 모듈과 인증서 자동 발급 프로그램인 Certbot을 설치합니다.

# 1. 아파치 SSL 모듈 설치
sudo yum install -y mod_ssl

# 2. Certbot 및 아파치용 플러그인 설치
sudo yum install -y certbot python3-certbot-apache


2단계: 기본 HTTP 설정 파일 준비 (:80 포트)
인증서를 발급받기 전에, 아파치가 도메인을 올바르게 인식하고 있어야 구글과 Let's Encrypt 봇이 인증을 성공합니다.

  • 설정 파일 열기: vi /etc/httpd/conf.d/example.conf
  • 내용 채우기: (80번 기본 포트와 내부 포트가 있다면 함께 지정)
<VirtualHost *:80>
    ServerName sub.example.com
    DocumentRoot /var/www/html
    
    # HTTP로 들어오면 자동으로 HTTPS로 튕겨주는 리다이렉트 규칙
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</VirtualHost>


3단계: SSL 인증서 발급받기 (Certbot 실행)
준비가 되었다면 Certbot을 실행하여 안전하게 자물쇠(인증서)를 구워옵니다. 아파치 플러그인을 쓰면 가상 호스트를 자동으로 분석해 줍니다.

sudo certbot --apache -d sub.example.com

 

  • 진행 과정 팁:
    1. 이메일 주소 입력 (인증서 만료 알림용)
    2. 이용약관 동의 (Y 입력)
    3. 리다이렉트 설정 여부 질문 ➔ 위 2단계에서 수동으로 넣었으므로 기본값 선택 또는 생략 가능.

💡 성공 시 인증서 저장 경로:

  • 인증서 파일: /etc/letsencrypt/live/sub.example.com/fullchain.pem
  • 개인키 파일: /etc/letsencrypt/live/sub.example.com/privkey.pem

4단계: SSL 가상 호스트 설정 마감 (:443 포트)
Certbot이 성공적으로 완료되면 보통 /etc/httpd/conf.d/example-le-ssl.conf라는 SSL 전용 설정 파일이 자동으로 만들어집니다. 예전에 우리 포트 충돌 때문에 고생했을 때 정리했던 가장 완벽한 최종 형태는 아래와 같습니다.

  • 설정 파일 열기: vi /etc/httpd/conf.d/example-le-ssl.conf
  • 최종 점검 서식:

 

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName sub.example.com
    DocumentRoot /var/www/html

    # 고유 주소(Permalink) 및 .htaccess 활성화를 위한 디렉토리 권한
    <Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    # SSL 자물쇠 설정 및 경로 지시 (Certbot이 지정한 경로)
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/sub.example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/sub.example.com/privkey.pem
    
    Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>


5단계: 설정 검증 및 아파치 재시작
파일을 고쳤다면 문법에 오타가 없는지 검사하고 아파치 서버에 반영합니다. 이 과정을 거쳐야 꼬이지 않습니다.

# 1. 아파치 설정 파일 문법 검사 (Syntax OK가 나와야 함)
httpd -t

# 2. 아파치 서버 완전히 재시작하여 적용
systemctl restart httpd


🔄 부록: SSL 인증서 자동 갱신 설정 (중요)
Let's Encrypt 무료 인증서는 90일마다 만료되므로, 리눅스 스케줄러(Crontab)에 등록해 두면 평생 신경 쓰지 않아도 알아서 자동으로 연장됩니다.

# 크론탭 설정 창 열기
crontab -e


열린 창 맨 아래에 다음 한 줄을 추가하고 저장합니다. (매달 1일 새벽 3시에 인증서 갱신을 시도하고 아파치를 새로고침하는 명령입니다.)

0 3 1 * * certbot renew --post-hook "systemctl reload httpd"

ex)
0 0 1 * * /usr/bin/certbot renew --renew-hook "systemctl reload httpd" >> /var/log/certbot-renew.log 2>&1


🚨 나중에 문제 생겼을 때 트러블슈팅 Checklist

  1. 사이트가 무한 리다이렉트(포트 꼬임)에 걸릴 때: 워드프레스 관리자 설정(wp-admin) ➔ 일반 메뉴에서 사이트 주소 주소가 http가 아닌 https://sub.example.com으로 정확히 일치하는지 확인하기.
  2. 인증서 발급 오류가 날 때: 후이즈(DNS)에서 해당 도메인의 A 레코드가 내 CentOS 서버 IP를 똑바로 가리키고 있는지 방화벽 포트(80, 443)가 열려있는지 체크하기.
반응형

'Unix & Linux' 카테고리의 다른 글

Tip. 프롬프트 창에 시간 나타내기  (2) 2024.11.29
chatGPT가 만들어준 쉘 스크립트  (0) 2024.11.27
hostname 변경  (0) 2024.11.21
awk : 원하는 문구만 추출  (2) 2024.11.19
웹 응답이 없을시 처리 스크립트  (0) 2024.11.14