웹사이트 검색

Ubuntu 14.04용 Apache에서 SSL 인증서를 만드는 방법


소개

TLS(Transport Layer Security)와 그 전신인 SSL(Secure Sockets Layer)은 일반 트래픽을 보호되고 암호화된 래퍼에 배치하기 위해 만들어진 보안 프로토콜입니다.

이러한 프로토콜을 사용하면 중간에 있는 사람이 트래픽을 가로채고 읽을 가능성 없이 원격 당사자 간에 안전하게 트래픽을 보낼 수 있습니다. 또한 인증 기관에서 신뢰할 수 있고 정품인 서버를 설정하여 인터넷 전체에서 도메인 및 서버의 신원을 확인하는 데 중요한 역할을 합니다.

이 가이드에서는 서버에 대한 트래픽을 암호화할 수 있는 Ubuntu 14.04 서버에서 Apache용 자체 서명 SSL 인증서를 생성하는 방법을 설명합니다. 이것은 서버 ID에 대한 제3자 검증의 이점을 제공하지는 않지만 단순히 정보를 안전하게 전송하려는 사람들의 요구 사항을 충족합니다.

참고: 자체 서명된 인증서 대신 Let’s Encrypt 사용을 고려할 수 있습니다. Let's Encrypt는 대부분의 웹 브라우저에서 신뢰할 수 있는 무료 SSL/TLS 인증서를 발급하는 새로운 인증 기관입니다. 시작하려면 튜토리얼을 확인하세요: Ubuntu 14.04에서 Let's Encrypt로 Apache를 보호하는 방법

전제 조건

시작하기 전에 일부 구성이 이미 처리되어 있어야 합니다.

이 가이드에서는 sudo 권한이 있는 루트가 아닌 사용자로 작업할 것입니다. Ubuntu 14.04 초기 서버 설정 가이드의 1-4단계에 따라 설정할 수 있습니다.

또한 Apache가 설치되어 있어야 합니다. 아직 실행하지 않은 경우 다음을 입력하여 빠르게 수정할 수 있습니다.

sudo apt-get update
sudo apt-get install apache2

1단계 - SSL 모듈 활성화

SSL 지원은 실제로 Ubuntu 14.04 Apache 패키지에서 표준으로 제공됩니다. 시스템에서 SSL을 활용하도록 활성화하기만 하면 됩니다.

다음을 입력하여 모듈을 활성화합니다.

sudo a2enmod ssl

SSL을 활성화한 후 변경 사항을 인식하려면 웹 서버를 다시 시작해야 합니다.

sudo service apache2 restart

이를 통해 웹 서버는 이제 SSL을 구성하면 SSL을 처리할 수 있습니다.

2단계 - 자체 서명된 SSL 인증서 생성

우리가 만들 인증서 파일을 배치하기 위해 Apache의 구성 계층 내에 하위 디렉터리를 생성하여 시작하겠습니다.

sudo mkdir /etc/apache2/ssl

이제 키와 인증서를 배치할 위치가 있으므로 다음을 입력하여 한 번에 둘 다 만들 수 있습니다.

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

이것이 정확히 무엇을 의미하는지 살펴보겠습니다.

  • openssl: 인증서, 키, 서명 요청 등을 만들고 관리하기 위해 OpenSSL에서 제공하는 기본 명령줄 도구입니다.
  • req: 이것은 X.509 인증서 서명 요청(CSR) 관리를 위한 하위 명령을 지정합니다. X.509는 SSL이 키 및 인증서 관리를 위해 준수하는 공개 키 인프라 표준입니다. 새로운 X.509 인증서를 생성하고 싶기 때문에 이것이 우리가 원하는 것입니다.
  • -x509: 이 옵션은 인증서 요청을 생성하는 대신 자체 서명된 인증서 파일을 만들도록 지정합니다.
  • -nodes: 이 옵션은 OpenSSL에 암호로 키 파일을 보호하지 않겠다고 알립니다. 암호로 보호된 키 파일이 있으면 서비스가 다시 시작될 때마다 암호를 입력해야 하므로 Apache가 자동으로 시작하는 데 방해가 됩니다.
  • -days 365: 생성하는 인증서가 1년 동안 유효함을 지정합니다.
  • -newkey rsa:2048: 이 옵션은 인증서 요청과 새 개인 키를 동시에 생성합니다. 개인 키를 미리 생성하지 않았기 때문에 필요합니다. rsa:2048은 2048비트 길이의 RSA 키를 생성하도록 OpenSSL에 지시합니다.
  • -keyout: 이 매개변수는 생성 중인 개인 키 파일의 출력 파일 이름을 지정합니다.
  • -out: 이 옵션은 생성 중인 인증서의 출력 파일 이름을 지정합니다.

\ENTER를 누르면 몇 가지 질문을 받게 됩니다.

요청되는 가장 중요한 항목은 "일반 이름(예: 서버 FQDN 또는 귀하의 이름)\이라는 줄입니다. 인증서와 연결할 도메인 이름을 입력해야 합니다. 그렇지 않은 경우 서버의 공용 IP 주소를 입력해야 합니다. 도메인 이름을 가지고 있습니다.

질문 부분은 다음과 같습니다.

<예비>

키와 인증서가 생성되어 /etc/apache2/ssl 디렉토리에 저장됩니다.

3단계 - SSL을 사용하도록 Apache 구성

이제 인증서와 키를 사용할 수 있으므로 가상 호스트 파일에서 이러한 파일을 사용하도록 Apache를 구성할 수 있습니다. 여기에서 Apache 가상 호스트를 설정하는 방법에 대해 자세히 알아볼 수 있습니다.

sites-available 하위 디렉토리에 있는 000-default.conf 파일에서 구성 파일을 기반으로 하는 대신 default.conf에서 이 구성을 기반으로 할 것입니다. -ssl.conf 파일에는 일부 기본 SSL 구성이 포함되어 있습니다.

지금 루트 권한으로 파일을 엽니다.

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

주석이 제거된 파일은 다음과 같습니다.

<예비>

이것은 약간 복잡해 보일 수 있지만 다행히 여기에서 대부분의 옵션에 대해 걱정할 필요가 없습니다.

가상 호스트(ServerAdmin, ServerName, ServerAlias, DocumentRoot 등)에 대해 구성할 일반적인 항목을 설정하고 Apache가 SSL 인증서 및 키를 찾는 위치를 변경하려고 합니다.

결국에는 다음과 같이 보일 것입니다. 빨간색 항목은 원본 파일에서 수정되었습니다.

<예비>

완료되면 파일을 저장하고 종료합니다.

4단계 - SSL 가상 호스트 활성화

이제 SSL 지원 가상 호스트를 구성했으므로 활성화해야 합니다.

다음을 입력하면 됩니다.

sudo a2ensite default-ssl.conf

그런 다음 새 가상 호스트 파일을 로드하려면 Apache를 다시 시작해야 합니다.

sudo service apache2 restart

이렇게 하면 생성한 SSL 인증서를 사용하여 암호화된 콘텐츠를 제공하는 새 가상 호스트가 활성화됩니다.

5단계 - 설정 테스트

이제 모든 것이 준비되었으므로 다음과 같이 https:// 프로토콜을 지정한 후 서버의 도메인 이름 또는 공용 IP 주소를 방문하여 구성을 테스트할 수 있습니다.

<예비>

브라우저가 신뢰하는 인증 기관 중 하나에서 서명하지 않았기 때문에 브라우저가 서버의 ID를 확인할 수 없다는 경고가 표시됩니다.

이것은 우리가 인증서에 자체 서명했기 때문에 예상됩니다. 인증서는 신뢰할 수 있는 인증 기관과 상호 작용하지 않았기 때문에 사용자를 위해 서버를 검증하지 않지만 여전히 통신을 암호화할 수 있습니다.

이것이 예상되었으므로 "계속 진행\ 버튼 또는 브라우저에 있는 유사한 옵션을 누를 수 있습니다.

이제 SSL 가상 호스트에 대해 구성한 DocumentRoot의 콘텐츠로 이동합니다. 이번에는 트래픽이 암호화됩니다. 메뉴 모음에서 잠금 아이콘을 클릭하여 이를 확인할 수 있습니다.

중간 녹색 섹션에서 연결이 암호화된 것을 볼 수 있습니다.

결론

이제 웹 사이트에서 SSL을 활성화해야 합니다. 이것은 방문자와 귀하의 사이트 사이의 통신을 보호하는 데 도움이 되지만 브라우저가 인증서의 유효성을 확인할 수 없음을 각 사용자에게 경고합니다.

공개 사이트를 시작할 계획이고 SSL이 필요한 경우 신뢰할 수 있는 인증 기관에서 SSL 인증서를 구입하는 것이 좋습니다.

Linux 서버 보안에 대해 자세히 알고 싶은 경우.

저스틴 엘링우드