Apache 웹 서버에 HTTPS를 적용하려면, SSL 인증서를 설치하고 Apache 설정을 변경하는 과정이 필요합니다. HTTPS는 데이터를 암호화하여 클라이언트와 서버 간의 보안을 강화하는 프로토콜입니다. 이 과정에서는 SSL 인증서를 발급받고, 이를 서버에 적용하는 방법을 다룹니다.
다음은 HTTPS를 설정하는 일반적인 단계입니다:
1. SSL 인증서 준비
HTTPS를 설정하기 위해서는 SSL 인증서가 필요합니다. 인증서를 발급받는 방법은 여러 가지가 있으며, 다음과 같은 방법들이 있습니다:
- Let’s Encrypt: 무료 SSL 인증서 제공.
- 상용 SSL 인증서: Comodo, DigiCert, GlobalSign 등에서 유료 인증서를 구매.
이 설명에서는 무료로 제공되는 Let’s Encrypt를 사용하여 SSL 인증서를 발급하는 방법을 다룹니다.
2. Certbot 설치 (Let’s Encrypt SSL 사용 시)
Let’s Encrypt에서 SSL 인증서를 발급받기 위해 Certbot을 설치합니다. Certbot은 인증서 발급 및 갱신을 자동화해주는 도구입니다.
우분투/데비안에서 Certbot 설치:
bash코드 복사sudo apt update
sudo apt install certbot python3-certbot-apache
CentOS/RHEL에서 Certbot 설치:
bash코드 복사sudo yum install epel-release
sudo yum install certbot python3-certbot-apache
3. Apache에 HTTPS 설정 (Certbot을 사용한 방법)
Certbot을 이용하면 자동으로 SSL 인증서를 발급받고 Apache 설정을 수정할 수 있습니다.
Certbot을 통해 SSL 인증서 발급 및 Apache 설정 자동화:
bash코드 복사sudo certbot --apache
위 명령을 실행하면, Certbot이 자동으로 인증서를 발급받고 Apache 설정 파일을 수정하여 HTTPS를 활성화합니다. 과정 중에 도메인 이름을 입력하고, SSL 적용 여부를 선택하는 단계를 거칩니다.
4. Apache 수동 설정 (SSL 인증서 수동 설치 시)
SSL 인증서를 수동으로 설치하려면, Apache 설정 파일을 수정해야 합니다.
1) SSL 모듈 활성화:
Ubuntu 또는 Debian 기반의 시스템에서는 mod_ssl
모듈을 활성화해야 합니다.
bash코드 복사sudo a2enmod ssl
CentOS에서는 mod_ssl
패키지를 설치하여 SSL 모듈을 활성화할 수 있습니다.
bash코드 복사sudo yum install mod_ssl
2) 가상 호스트 파일 수정:
Apache의 가상 호스트 설정 파일을 수정하여 HTTPS를 적용합니다. 일반적으로 /etc/apache2/sites-available/
디렉토리에 위치한 설정 파일을 수정합니다.
예시:
bash코드 복사sudo nano /etc/apache2/sites-available/your-domain.conf
your-domain.conf
파일에 다음과 같이 HTTPS 설정을 추가합니다:
apache코드 복사<VirtualHost *:443>
ServerName your-domain.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/your-domain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/your-domain.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/your-domain.com/chain.pem
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
인증서 파일 경로는 Let’s Encrypt가 제공한 경로를 참고하여 적용합니다. 상용 인증서의 경우, 발급된 인증서 경로로 변경해야 합니다.
3) 포트 443 설정 확인:
SSL 통신은 포트 443을 사용하므로, Apache가 이 포트를 리스닝하는지 확인해야 합니다.
/etc/apache2/ports.conf
파일에 다음과 같은 항목이 있는지 확인합니다:
apache코드 복사Listen 443
CentOS에서는 /etc/httpd/conf.d/ssl.conf
파일을 수정하여 비슷한 설정을 적용할 수 있습니다.
5. Apache 재시작
설정이 완료되었으면 Apache를 재시작하여 변경 사항을 적용합니다.
우분투/데비안:
bash코드 복사sudo systemctl restart apache2
CentOS/RHEL:
bash코드 복사sudo systemctl restart httpd
6. SSL 인증서 자동 갱신 (Let’s Encrypt 사용 시)
Let’s Encrypt 인증서는 90일 동안 유효하므로, 자동 갱신 설정을 해야 합니다. Certbot은 자동 갱신 스크립트를 제공하므로 이를 크론탭(Crontab)에 등록할 수 있습니다.
크론탭 열기:
bash코드 복사sudo crontab -e
다음 줄을 추가하여 매일 새벽에 Certbot 갱신을 시도하도록 설정할 수 있습니다:
bash코드 복사0 3 * * * certbot renew --quiet
결론
이 과정을 통해 Apache에 HTTPS를 적용할 수 있습니다. Let’s Encrypt를 사용하면 무료로 SSL 인증서를 발급받고, Certbot을 통해 쉽게 자동 설정 및 갱신을 처리할 수 있습니다.