SSL 인증서로 Apache HTTP를 설정하는 방법은 무엇입니까?
Apache 서버를 SSL/TLS 인증서로 보호하는 방법을 알아봅니다.
인증서가 성공적으로 적용되면, 설정된 도메인 또는 IP 주소를 HTTPS 프로토콜을 통해 안전하게 접근할 수 있게 됩니다.
보안 설정을 시작해 봅시다.
주요 단계는 다음과 같습니다.
- Apache HTTP 2.4.5 버전을 SSL 모듈과 함께 컴파일합니다.
- SSL 인증서를 발급받습니다.
- Apache 서버가 SSL을 지원하도록 구성합니다.
소스 코드를 이용한 Apache 설치 및 SSL 활성화
SSL 기능을 활성화하려면, Apache HTTP 서버를 mod_ssl 모듈과 함께 컴파일해야 합니다. 본 가이드에서는 CentOS 7 가상 머신 환경을 사용하며, 디지털 오션을 예시로 사용합니다.
- Linux 서버에 루트 권한으로 로그인한 후, 최신 버전의 Apache를 다운로드합니다.
wget http://www-us.apache.org/dist//httpd/httpd-2.4.25.tar.gz .
참고: 최신 버전 정보는 여기에서 확인할 수 있습니다.
- 다운로드한 파일을 gunzip 명령어를 사용하여 압축 해제합니다.
gunzip -c httpd-2.4.25.tar.gz | tar xvf -
- 압축 해제 후 "httpd-2.4.25"라는 이름의 새로운 폴더가 생성됩니다.
- 해당 폴더로 이동하여 아래의 설정 명령어를 실행합니다.
./configure --enable-ssl –-enable-so
주의: 새 서버에서 설정하는 경우, APR, PCRE, OpenSSL 관련 오류가 발생할 수 있으며, 이러한 경우 문제 해결 가이드를 참고하시기 바랍니다.
위의 configure 명령어 실행 시 오류가 없는지 확인한 후, make 명령어를 사용하여 설치를 진행합니다.
make make install
make 명령어 실행 시 오류가 없는지 확인해야 합니다. 이로써 SSL을 지원하는 Apache 웹 서버가 성공적으로 설치되었습니다.
SSL 인증서 획득하기
인증 기관으로부터 서명된 SSL 인증서를 획득하는 방법은 여러 가지가 있습니다.
만약 인트라넷 웹 서버에 SSL을 적용하려는 경우, 대부분의 조직에서는 내부 인증서 발급팀이 있으므로 해당 팀에 문의하는 것이 좋습니다. 그러나 이 경우에도 CSR(인증서 서명 요청)을 생성해야 하며, OpenSSL을 이용하여 이를 수행할 수 있습니다.
인터넷 연결이 가능한 URL을 보호하려는 경우에는 VeriSign, GoDaddy, Namecheap, ZeroSSL 등 상용 인증 기관을 이용하거나, Let's Encrypt와 같은 무료 인증서를 발급받을 수 있습니다.
Let's Encrypt는 무료 SSL/TLS 인증서를 제공하는 리눅스 재단 협력 프로젝트입니다. 본 가이드에서는 Let's Encrypt를 이용하여 제 도메인(Chandan.io)에 대한 인증서를 발급받을 것입니다.
CSR을 생성하는 방법은 다양하지만, 개인적으로 가장 편리하다고 생각하는 방법은 "SSL For Free" 온라인 도구를 이용하는 것입니다.
보안을 적용할 URL을 입력하십시오.
제공되는 방법 중 하나를 선택하여 도메인 소유권을 확인한 후, 도메인 인증서 파일을 다운로드합니다.

다운로드하면 Apache 웹 서버 구성에 사용할 세 개의 파일이 제공됩니다.
- key: 개인 키 파일로, 외부에 공개해서는 안 됩니다.
- 인증서: 실제 도메인에 대한 SSL 인증서 파일입니다.
- Ca_bundle: 서명자 루트/중간 인증서 파일입니다.
다운로드한 파일들을 웹 서버로 전송합니다. 곧 사용하게 될 것입니다.
Apache SSL 구성하기
마지막 단계는 Apache 서버가 HTTPS 요청을 처리하도록 구성하는 것입니다.
- Apache 웹 서버에 로그인합니다.
- httpd.conf 파일을 백업합니다 (기본 위치: /usr/local/apache2/conf/).
- vi 편집기를 사용하여 파일을 열고, mod_ssl 모듈과 httpd-ssl.conf 파일이 로드되어 있고 주석 처리되어 있지 않은지 확인합니다.
LoadModule ssl_module modules/mod_ssl.so Include conf/extra/httpd-ssl.conf
httpd-ssl.conf 파일을 사용하여 인증서 세부 정보를 구성합니다. 다음 항목들을 확인하여 설정이 올바른지 확인해야 합니다.
- SSLCertificateFile: 이전에 다운로드한 인증서 CRT 파일의 경로를 지정합니다.
- SSLCertificateKeyFile: 개인 키 파일(private.key)의 경로를 지정합니다.
- SSLCertificateChainFile: ca_bundle.crt 파일의 경로를 지정합니다.
팁: "ssl"이라는 이름의 새 폴더를 생성하고, 이 폴더에 모든 인증서 관련 파일을 저장하는 것이 좋습니다.
- 필요한 경우 백업을 진행한 후, vi 편집기를 사용하여 파일을 수정합니다.
SSLCertificateFile "/usr/local/apache2/conf/ssl/certificate.crt" SSLCertificateChainFile "/usr/local/apache2/conf/ssl/ca_bundle.crt" SSLCertificateKeyFile "/usr/local/apache2/conf/ssl/private.key"
다음으로 "ServerName" 지시문을 구성해야 합니다. 일반적으로 도메인 또는 URL 이름을 사용합니다.
ServerName chandan.io
- 파일을 저장한 후, Apache 웹 서버를 재시작합니다.
cd /usr/local/apache2/bin ./apachectl stop ./apachectl start
마지막으로 도메인이 새로 구성된 웹 서버 IP 주소에 매핑되어 있는지 확인해야 합니다. 완료되면 HTTPS를 통해 도메인에 접속해 봅니다.

보시는 바와 같이, Chandan.io는 제가 구성한 인증서를 사용하여 HTTPS를 통해 접속할 수 있습니다.
위에 설명된 단계는 SSL 인증서 설정에 필수적이며, 보안 수준을 더욱 강화하려면 SSL 설정을 추가로 조정할 수 있습니다. 웹 서버 SSL/TLS를 실행하기 전에 테스트를 수행하여 보안 취약점에 노출되지 않도록 하는 것이 좋습니다.
본 가이드가 Apache 웹 서버에서 SSL 인증서를 적용하여 HTTPS를 통해 URL에 접근하는 방법에 대한 이해를 돕기를 바랍니다.
재미있게 읽으셨나요? 그렇다면 다른 사람들과 공유해 주시는 건 어떨까요?