nginx - définir plusieurs nom du serveur avec ssl support

j'aimerais utiliser nginx pour servir un site Web avec plusieurs noms de domaine et SSL:

  • webmail.example.com
  • webmail.beispiel.de

les deux utilisent le même vhost donc je n'ai défini le server_name que deux fois. Le problème est que j'ai besoin de nginx pour servir le bon certificat ssl pour chaque nom de domaine.

est-ce possible avec un seul vhost ou dois-je mettre en place deux VHost?

35
demandé sur Dylan Valade 2013-01-21 11:28:17

1 réponses

Modifier novembre 2014 : la première réponse n'est pas correcte et est incomplet ; il avait besoin d'un rafraîchissement! elle est ici.

en gros, il y a deux cas



- vous possédez un certificat de Joker (ou certificat multi-domaines)

dans ce cas, vous pouvez utiliser plusieurs vhosts écoutant la même adresse IP/port https, et les deux vhosts utiliser le même certificat (écoute sur toutes les interfaces), p.ex.

server {
  listen 443;
  server_name webmail.example.com;
  root /var/www/html/docs/sslexampledata;

  ssl on;
  ssl_certificate /var/www/ssl/samecertif.crt;
  ssl_certificate_key /var/www/ssl/samecertif.key;
  ...
}


server {
  listen 443;
  server_name webmail.beispiel.de;
  root /var/www/html/docs/sslbeispieldata;

  ssl on;
  ssl_certificate /var/www/ssl/samecertif.crt;
  ssl_certificate_key /var/www/ssl/samecertif.key;
  ...
}

ou dans votre cas spécifique, ayant les deux domaines servis par les mêmes données

server {
  listen 443;
  server_name webmail.example.com webmail.beispiel.de; # <== 2 domains
  root /var/www/html/docs/sslbeispieldata;

  ssl on;
  ssl_certificate /var/www/ssl/samecertif.crt;
  ssl_certificate_key /var/www/ssl/samecertif.key;
  ...
}





- vous avez deux (+) certificats différents

le cas ci-dessus (une IP pour tous les certificats) fonctionnera toujours avec les navigateurs modernes via le nom du serveur Indication. SNI demande au client (navigateur) d'envoyer l'hôte qu'il veut atteindre dans l'en-tête de requête, permettant au serveur (nginx) de traiter avec vhosts avant d'avoir à traiter avec le certificat. La configuration est la même que ci-dessus, sauf que chaque vhost a un certificat spécifique, crt et clé .



( nginx soutien de SNI 0.9.8 f, vérifiez que votre serveur nginx est compatible SNI )

( aussi, SF parle de SNI et le soutien de navigateur )

Sinon, si vous voulez atteindre les navigateurs plus anciens aussi, vous avez besoin de plusieurs vhosts écoutant chacun un différent adresses IP / ports https, par exemple

server {
  listen 1.2.3.4:443; # <== IP 1.2.3.4
  server_name webmail.example.com;
  root /var/www/html/docs/sslexampledata;

  ssl on;
  ssl_certificate /var/www/ssl/certifIP1example.crt;
  ssl_certificate_key /var/www/ssl/certifIP1example.key;
  ...
}


server {
  listen 101.102.103:443; <== different IP
  server_name webmail.beispiel.de;
  root /var/www/html/docs/sslbeispieldata;

  ssl on;
  ssl_certificate /var/www/ssl/certifIP2beispiel.crt;
  ssl_certificate_key /var/www/ssl/certifIP2beispiel.key;
  ...
}

la raison est bien expliqué ici .

35
répondu Ring Ø 2017-04-13 12:13:38