nginx에서 와일드 카드 인증서를 사용하는 여러 SSL 가상 호스트


14

HTTP를 통해 제공하려는 동일한 도메인 이름을 공유하는 두 개의 호스트 이름이 있습니다. 와일드 카드 -SSL 인증서가 있고 두 개의 vhost 구성을 만들었습니다.

호스트 A

listen      127.0.0.1:443 ssl;
server_name     a.example.com;
root        /data/httpd/a.example.com;
ssl_certificate /etc/ssl/wildcard.cer;
ssl_certificate_key /etc/ssl/wildcard.key;

호스트 B

listen      127.0.0.1:443 ssl;
server_name     b.example.com;
root        /data/httpd/b.example.com;
ssl_certificate /etc/ssl/wildcard.cer;
ssl_certificate_key /etc/ssl/wildcard.key;

그러나 두 호스트 이름에 동일한 vhost가 제공됩니다.

답변:


17

SSL 청취 / 구성 부분에서 가상 호스트를 분할해야합니다.

듣기 부분 :

server {
  listen              127.0.0.1:443 default_server ssl;
  server_name         _;
  ssl_certificate     /etc/ssl/wildcard.cer;
  ssl_certificate_key /etc/ssl/wildcard.key;
}

그리고 이제 vhosts :

server {
  listen      127.0.0.1:443;
  server_name a.example.com;
  root        /data/httpd/a.example.com;
}

server {
  listen      127.0.0.1:443;
  server_name b.example.com;
  root        /data/httpd/b.example.com;
}

이 작동하지 않습니다. 호스트는 필요 ssl_certificate하며 ssl_certificate_key내부 server또는 http위치에 구성해야합니다 . 귀하의 예에서는 첫 번째 server위치 내에 선언 했지만 다른 두 호스트에 대해서는 선언하지 않았습니다.
Pothi Kalimuthu

2
이 구성에 충분 ssl_certificate, ssl_certificate_keyssldefault_server 만에. BTW,이 구성은 실제로 작동합니다.
Teftin

불행히도 이것은 작동하지 않습니다 : nginx는 두 호스트에서 동일한 vhost 내용을 제공합니다.
vincent.io

2
분명히 이러한 변경을 수행 할 때 nginx를 다시로드 하는 대신 다시 시작 해야합니다 . 많은 감사, 당신의 대답은 매력처럼 작동합니다 :)
vincent.io

1
이것에 감사합니다, 1.4.x nginx와 함께 작동 ssl하려면 listen지시문이 필요 했습니다 . listen가상 호스트에서의 나의 지시 또한 문자 그대로 동일해야했다 (논리적 동등성은 충분하지 않았다).
Dave S.

13

실제로 매뉴얼에 설명되어 있습니다 : http://nginx.org/en/docs/http/configuring_https_servers.html#certificate_with_several_names

ssl_certificate /etc/ssl/wildcard.cer;
ssl_certificate_key /etc/ssl/wildcard.key;
server {
  listen      443 ssl;
  server_name a.example.com;
  root        /data/httpd/a.example.com;
}
server {
  listen      443 ssl;
  server_name b.example.com;
  root        /data/httpd/b.example.com;
}

이제 많은 사이트가있는 경우 위와 같이 server {} 부분이있는 폴더에 모든 파일을 단일 파일로 저장하고 기본 파일에 include 지시문을 저장하여 모든 사이트를로드하는 것이 좋습니다.

ssl_certificate /etc/ssl/wildcard.cer;
ssl_certificate_key /etc/ssl/wildcard.key;
include /etc/nginx/conf.d/subfolder/*;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.