Linux Ubuntu Apache2 SSL


Ubuntu에서 Apache2를 사용하여 SSL (Secure Sockets Layer)을 설정하는 방법에 대해 설명드리겠습니다. SSL을 설정하면 웹 서버와 클라이언트 간의 통신이 암호화되어 보안이 강화됩니다.

Apache2에서 SSL 설정하기 (Ubuntu 기준)

1. Apache 및 SSL 모듈 설치

먼저 Apache2와 SSL 모듈을 설치해야 합니다.

sudo apt update
sudo apt install apache2
sudo a2enmod ssl
sudo systemctl restart apache2

2. SSL 인증서 생성 및 설치

SSL 인증서를 생성하거나 구입한 후에 Apache에 설치해야 합니다. 대부분의 경우, SSL 인증서는 인증 기관 (CA, Certificate Authority)에서 구입하거나 무료로 발급받을 수 있습니다. 자체 서명된 인증서를 사용할 경우에는 아래의 과정을 따릅니다.

2-1. 자체 서명 SSL 인증서 생성

자체 서명된 SSL 인증서를 생성하는 방법은 다음과 같습니다.

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt

이 명령은 1년간 유효한 자체 서명 SSL 인증서를 생성합니다. 생성 과정 중에 몇 가지 질문에 답변해야 합니다.

2-2. SSL 인증서 설치

생성된 SSL 인증서와 키 파일을 Apache2 설정에 적용합니다.

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

다음과 같이 설정 파일을 수정합니다.

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin webmaster@localhost
        ServerName your_domain.com
        DocumentRoot /var/www/html

        SSLEngine on
        SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
        SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key

        # 보안 강화를 위한 추가 옵션
        SSLProtocol all -SSLv2 -SSLv3
        SSLCipherSuite HIGH:!aNULL:!MD5

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
</IfModule>
  • ServerName: 사용자의 도메인 이름을 설정합니다.
  • DocumentRoot: 웹 페이지 파일이 저장된 디렉토리 경로를 설정합니다.
  • SSLEngine on: SSL 엔진을 활성화합니다.
  • SSLCertificateFileSSLCertificateKeyFile: SSL 인증서 파일의 경로를 지정합니다.

3. Apache SSL 가상 호스트 활성화

SSL 설정 파일을 활성화하고 Apache를 재시작합니다.

sudo a2ensite default-ssl.conf
sudo systemctl reload apache2

4. 방화벽 설정 (선택 사항)

SSL 포트인 443번을 방화벽에서 허용해야 합니다.

sudo ufw allow 443/tcp
sudo ufw reload

테스트와 확인

웹 브라우저에서 https://your_domain.com 또는 https://your_server_ip를 입력하여 SSL이 올바르게 작동하는지 확인할 수 있습니다. 브라우저에서 안전한 연결이라는 메시지를 확인할 수 있어야 합니다.

이렇게 하면 Ubuntu에서 Apache2를 사용하여 SSL을 설정하는 방법에 대한 간략한 설명을 마쳤습니다.


Leave a Reply

Your email address will not be published. Required fields are marked *