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 ;;
   }
   ...
 }

  • Openssl: extrait le certificate racine de la string de certificates?
  • jboss wildcard cert import
  • Firefox sec_error_unknown_issuer après renouvellement du certificate CA racine
  • Impossible d'accéder au site sur HTTPS en utilisant un certificate auto-signé
  • Certificats RDS 2012 - Les noms des sujets ne correspondent pas
  • ISA 2006, deux auditeurs sur le même port avec différents certificates et methods d'authentifications
  • SSL avec plusieurs servers et domaines
  • Vérifiez le certificate client dans nginx?
  • Nginx réécrit toujours sur ssl même sur des sites non ssl
  • Apache envoie un mauvais certificate SSL sur certaines connections / browsers
  • Meilleure compréhension des noms alternatifs TLS / SSL?
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.