매일 업데이트
2022-08-21 05:44 5 min

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에 접근하는 방법에 대한 이해를 돕기를 바랍니다.

재미있게 읽으셨나요? 그렇다면 다른 사람들과 공유해 주시는 건 어떨까요?

저자
Korea

기술 트렌드와 실용적인 팁을 전하는 लेखक입니다.