Spécifiez le ssl_certificatee de nginx dans le bloc location {}

Pour un service Web, nous avons deux certificates: myservice.com et api.myservice.com. Les deux ont la même application (racine du document) mais sont diffusés sur HTTPS avec différents certificates. Malheureusement, nous n'avons pas de certificate de deux domaines en ce moment.

Actuellement, je dois définir deux blocs de servers, un pour chaque point qui pointe vers la même racine. La seule différence est la directive ssl_certificatee , mais celle-ci ne peut être déclarée que sur le niveau HTTP ou server .

Néanless, existe-t-il un moyen d'éviter de copyr / coller dans les blocs du server? Il s'agit d'un exemple de code:

 server { listn 443; server_name .myservice.com; root /var/www/myservice.com/public; include conf.d/common.conf.inc; ssl on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!AESGCM; ssl_session_cache shared:SSL:5m; ssl_session_timeout 10m; ssl_certificatee /path/to/myservice.com.bundle.crt; ssl_certificatee_key /path/to//myservice.com.key; ssl_prefer_server_ciphers on; } server { listn 443; server_name api.myservice.com; root /var/www/myservice.com/public; include conf.d/common.conf.inc; ssl on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!AESGCM; ssl_session_cache shared:SSL:5m; ssl_session_timeout 10m; ssl_certificatee /path/to/api.myservice.com.bundle.crt; ssl_certificatee_key /path/to//myservice.com.key; ssl_prefer_server_ciphers on; } 

/ edit: Comme demandé, voici la sortie de nginx -V :

version nginx: nginx / 1.2.7

Support TLS SNI activé configurer

arguments: –prefix = / usr / share / nginx –conf-path = / etc / nginx / nginx.conf –error-log-path = / var / log / nginx / error.log –http-client- body-temp-path = / var / lib / nginx / corps –http-fastcgi-temp-path = / var / lib / nginx / fastcgi –http-log-path = / var / log / nginx / access.log –http-proxy-temp-path = / var / lib / nginx / proxy –http-scgi-temp-path = / var / lib / nginx / scgi –http-uwsgi-temp-path = / var / lib / nginx / uwsgi –lock-path = / var / lock / nginx.lock –pid-path = / run / nginx.pid –with-pcre-jit –with-debug –with-http_addition_module –with -http_dav_module –with-http_flv_module –with-http_geoip_module –with-http_gzip_static_module –with-http_image_filter_module –with-http_mp4_module –with-http_perl_module –with-http_random_index_module –with-http_realip_module –with-http_secure_link_module –with -http_stub_status_module –with-http_ssl_module –with-http_sub_module –with-http_xslt_module –with-ipv6 –with-sha1 = / usr / include / openssl –with-md5 = / usr / include / openssl –with- mail –with-mail_ssl_module –add-module = / build /buildd/nginx-1.2.7/debian/modules/nginx-auth-pam –add-module = / build / buildd / nginx-1.2.7 / debian / modules / chunkin-nginx-module –add-module = /build/buildd/nginx-1.2.7/debian/modules/headers-more-nginx-module –add-module = / build / buildd / nginx-1.2.7 / debian / modules / nginx-development-kit – add-module = / build / buildd / nginx-1.2.7 / debian / modules / nginx-echo –add-module = / build / buildd / nginx-1.2.7 / debian / modules / nginx-http-push – add-module = / build / buildd / nginx-1.2.7 / debian / modules / nginx-lua –add-module = / build / buildd / nginx-1.2.7 / debian / modules / nginx-upload-module – add-module = / build / buildd / nginx-1.2.7 / debian / modules / nginx-upload-progress –add-module = / build / buildd / nginx-1.2.7 / debian / modules / nginx-upstream-fair –add-module = / build / buildd / nginx-1.2.7 / debian / modules / nginx-dav-ext-module

2 Solutions collect form web for “Spécifiez le ssl_certificatee de nginx dans le bloc location {}”

Vous connaissez déjà (et utilisez) la réponse! Il suffit d' include les parties communes d'un file séparé.

Vous pouvez éviter de dupliquer l'hôte virtuel en effectuant quelque chose comme ceci avec "if" et définir un hôte virtuel:

 server {
     écoutez 443;
     nom_server .myservice.com api.myservice.com;
     root /var/www/myservice.com/public;

     include conf.d / common.conf.inc;

     ssl on;
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
     ssl_ciphers ECDHE-RSA-AES256-SHA384: AES256-SHA256: RC4: HIGH:! MD5:! aNULL:! eNULL:! NULL:! DH:! EDH:! AESGCM;
     ssl_session_cache partagé: SSL: 5m;
     ssl_session_timeout 10m;
     ssl_prefer_server_ciphers on;

   if ($ server_name = .myservice.com) {
     ssl_certificatee /path/to/myservice.com.bundle.crt;
     ssl_certificatee_key /path/to//myservice.com.key;
   }
   if ($ server_name = api.myservice.com) {
     ssl_certificatee /path/to/api.myservice.com.bundle.crt;
     ssl_certificatee_key /path/to//myservice.com.key ;;
   }
   ...
 }

  • Alternatives Apache par annuaire SSLVerifyClient
  • Rediriger vers un domaine avant que SSL ne soit lu
  • Révocation de l'authentification bidirectionnelle du certificate client
  • Apache semble utiliser un ancien certificate expiré même si un nouveau est installé
  • Apache Redirect vers Jboss SSL
  • Redirection du domaine nu HTTPS sur www, sans un certificate correspondant sur l'hôte virtuel du domaine nu
  • Essayer de configurer SSL avec Apache sur Ubuntu 14.04
  • Quel nom d'hôte FQDN à utiliser pour la request de signature de certificate SSL - lors de l'utilisation d'un logging CNAME?
  • Certificat SSL pour FTPS, est-ce le même que pour HTTPS?
  • Comment fournir un sujetAltName lors de la génération d'une request de certificate dans IIS?
  • Est-il possible d'acheter SSL cert SEULEMENT pour un sous-domaine?
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.