웹사이트 검색

Ubuntu 12.04에서 Nginx를 사용하여 하나의 IP에 여러 SSL 인증서를 설정하는 방법


상태: 더 이상 사용되지 않음

이 문서에서는 더 이상 지원되지 않는 Ubuntu 버전에 대해 설명합니다. 현재 Ubuntu 12.04를 실행하는 서버를 운영 중인 경우 지원되는 Ubuntu 버전으로 업그레이드하거나 마이그레이션하는 것이 좋습니다.

  • Ubuntu 14.04로 업그레이드합니다.
  • Ubuntu 14.04에서 Ubuntu 16.04로 업그레이드
  • 서버 데이터를 지원되는 버전으로 마이그레이션

이유:

대신 참조:

SNI(Server Name Identification)를 사용하여 하나의 IP 주소에서 여러 SSL 인증서를 호스팅할 수 있습니다.

SNI 소개

단일 가상 사설 서버에서 여러 사이트를 호스팅하는 것은 가상 호스트를 사용하는 문제가 아니지만 각 사이트에 별도의 SSL 인증서를 제공하려면 일반적으로 별도의 IP 주소가 필요했습니다. 이 프로세스는 사이트 방문자에게 요청된 서버 이름과 일치하는 인증서를 보내는 SNI(Server Name Indication)를 사용하여 최근에 간소화되었습니다.

메모:

SNI는 웹 서버에서 여러 SSL 사이트를 제공하는 데만 사용할 수 있으며 메일 서버 등과 같은 다른 데몬에서는 전혀 작동하지 않을 가능성이 있습니다. 또한 여전히 인증서 오류를 제공할 수 있는 이전 웹 브라우저의 일부도 있습니다. Wikipedia에는 이 TLS 확장을 지원하거나 지원하지 않는 업데이트된 소프트웨어 목록이 있습니다.

설정

SNI는 인증서를 제공하기 위해 도메인 이름을 등록해야 합니다.

이 자습서의 단계를 수행하려면 사용자에게 루트 권한이 있어야 합니다. 3단계와 4단계의 초기 서버 설정 자습서에서 설정 방법을 확인할 수 있습니다.

Nginx는 VPS에 이미 설치되어 실행 중이어야 합니다.

그렇지 않은 경우 다음 명령으로 다운로드할 수 있습니다.

sudo apt-get install nginx

서버에서 SNI가 활성화되어 있는지 확인할 수 있습니다.

 nginx -V

nginx 버전을 표시한 후 다음 줄이 표시되어야 합니다.

 TLS SNI support enabled

1단계 - SSL 인증서 디렉터리 만들기

이 자습서의 목적을 위해 두 인증서 모두 자체 서명됩니다. example.com과 example.org를 모두 호스팅하는 서버를 만들기 위해 노력할 것입니다.

SSL 인증서는 인증서 자체와 공개 키의 두 부분으로 구성됩니다. 모든 관련 파일에 쉽게 액세스하려면 각 가상 호스트의 SSL 인증서에 대한 디렉토리를 만들어야 합니다.

mkdir -p /etc/nginx/ssl/example.com
mkdir -p /etc/nginx/ssl/example.org

2단계 - 서버 키 및 인증서 서명 요청 생성

먼저 example.com에 대한 SSL 인증서를 생성합니다.

적절한 디렉터리로 전환합니다.

cd /etc/nginx/ssl/example.com

개인 서버 키를 생성하여 시작하십시오. 이 과정에서 특정 암호를 입력하라는 메시지가 표시됩니다. 이 문구를 주의 깊게 기록해 두십시오. 잊어버리거나 분실하면 인증서에 액세스할 수 없습니다.

sudo openssl genrsa -des3 -out server.key 1024

인증서 서명 요청을 생성하여 후속 조치를 취하십시오.

sudo openssl req -new -key server.key -out server.csr

이 명령은 입력해야 하는 필드 목록을 표시하도록 터미널에 프롬프트를 표시합니다.

가장 중요한 줄은 "Common Name"입니다. 여기에 공식 도메인 이름을 입력하거나 아직 없는 경우 사이트 IP 주소를 입력하세요. 챌린지 암호와 선택적 회사 이름은 비워 둡니다.

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:NYC
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Awesome Inc
Organizational Unit Name (eg, section) []:Dept of Merriment
Common Name (e.g. server FQDN or YOUR name) []:example.com                  
Email Address []:webmaster@awesomeinc.com

3단계 - 암호 제거

인증서 생성이 거의 완료되었습니다. 그러나 암호를 제거하는 것이 도움이 됩니다. 암호가 있으면 보안이 강화되지만 nginx를 다시 로드하려고 하면 문제가 시작됩니다. nginx가 충돌하거나 재부팅해야 하는 경우 전체 웹 서버를 다시 온라인 상태로 전환하려면 항상 암호를 다시 입력해야 합니다.

암호를 제거하려면 다음 명령을 사용하십시오.

sudo cp server.key server.key.org
sudo openssl rsa -in server.key.org -out server.key

4단계 - SSL 인증서 서명

인증서가 거의 완료되었으며 서명만 하면 됩니다.

365를 원하는 일수로 변경하여 인증서 유효 기간을 지정할 수 있습니다. 현재 이 인증서는 1년 후에 만료됩니다.

sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

이제 첫 번째 호스트에 대한 인증서 작성이 완료되었습니다.

두 번째 인증서를 만들려면 두 번째 디렉터리로 전환합니다.

cd /etc/nginx/ssl/example.org

두 번째 인증서에 대해 이전 세 단계를 반복합니다. 둘 다 정리되면 가상 호스트에 인증서를 추가할 수 있습니다.

5단계 - 가상 호스트 생성

인증서를 저장하고 준비했으면 가상 호스트 파일에 정보를 추가할 수 있습니다.

필수는 아니지만 두 개의 가상 호스트 파일을 만들어 가상 호스트를 별도의 파일에 저장할 수 있습니다.

sudo nano /etc/nginx/sites-available/example.com

그러면 각 파일에 가상 호스트 구성이 포함됩니다(세부 정보와 일치하도록 server_name, ssl_certificatessl_certificate_key 행을 편집해야 함).

 server {

        listen   443;
        server_name example.com;

        root /usr/share/nginx/www;
        index index.html index.htm;

        ssl on;
        ssl_certificate /etc/nginx/ssl/example.com/server.crt;
        ssl_certificate_key /etc/nginx/ssl/example.com/server.key;
}

그런 다음 적절한 구성을 다른 가상 호스트 파일에 넣을 수 있습니다.

sudo nano /etc/nginx/sites-available/example.org
 server {

        listen   443;
        server_name example.org;

        root /usr/share/nginx/www;
        index index.html index.htm;

        ssl on;
        ssl_certificate /etc/nginx/ssl/example.org/server.crt;
        ssl_certificate_key /etc/nginx/ssl/example.org/server.key;
}

6단계 - 가상 호스트 활성화

마지막 단계는 sites-available 디렉토리와 sites-enabled 디렉토리 사이에 심볼릭 링크를 만들어 호스트를 활성화하는 것입니다.

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
sudo ln -s /etc/nginx/sites-available/example.org /etc/nginx/sites-enabled/example.org

모든 가상 호스트가 제자리에 있으면 nginx를 다시 시작하십시오.

sudo service nginx restart

이제 각각 자체 도메인 이름과 SSL 인증서가 있는 두 사이트에 모두 액세스할 수 있어야 합니다.

도메인(예: example.com 또는 example.org) 또는 https가 있는 도메인만 입력하면 서명된 SSL 인증서가 있거나 없는 사이트를 볼 수 있습니다. 프리픽스(https://example.com 또는 https://example.org).