ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: SSL certificates issue



On Mon, Nov 19, 2007 at 02:48:27PM +0300, Driantsov Alexander wrote:

> Столкнулся с проблемой при нескольких vhost'ах и SSL. Possibly a bug.
> 
> Описание:
> 
> Nginx используется как reverse-proxy для HTTPS. Есть 2(3,5,10) виртуальных 
> хостов. Для них есть wildcard ssl cert. В первод домене(скажем 
> subdomain1.domain.com) подсоединяется wildcard ssl cert, но в 
> subdomain2.domain.com необходимо подключить сертификат конкретно для 
> определенного домена, т.к. этот домен, отзывается как на 
> subdomain2.domain.com, так и на domain2.com. По какой-то причине Nginx 
> использует один и тот же сертификат для обоих виртуальных хостов(тот что был 
> подключен первым)

http://www.modssl.org/docs/2.8/ssl_faq.html#ToC47

> Конфигурация nginx:
> 
> # /usr/local/nginx/sbin/nginx -V
> nginx version: nginx/0.5.33
> built by gcc 4.1.1 20070105 (Red Hat 4.1.1-52)
> configure arguments: --with-zlib=../zlib-1.2.3 --prefix=/usr/local/nginx 
> --with-http_ssl_module
> 
> Конфиги:
> 
> /usr/local/nginx/conf/nginx.conf:
> --------------------------------------
> user root;
> worker_processes  6;
> 
> pid        logs/nginx.pid;
> 
> events {
>     worker_connections  1024;
> }
> 
> http {
>     include       conf/mime.types;
>     default_type  application/octet-stream;
> 
> include conf/http.conf;
> include conf/vhosts.conf;
> }
> --------------------------------------
> conf/http.conf:
> --------------------------------------
>     sendfile        on;
>     gzip  on;
>     gzip_min_length  1100;
>     gzip_buffers     4 8k;
>     gzip_types       text/plain;
>     output_buffers   1 100k;
>     postpone_output  10460;
> 
>     tcp_nopush       on;
>     tcp_nodelay      on;
> 
>     keepalive_timeout  2250 120;
>     client_header_timeout  3m;
>     client_body_timeout    3m;
>     send_timeout           3m;
>     proxy_read_timeout 300;
>     proxy_connect_timeout 300;
>     proxy_send_timeout 300;
>     client_header_buffer_size    1k;
>     client_max_body_size 150M;
>     large_client_header_buffers  4 4k;
>     server_names_hash_bucket_size 64;
> --------------------------------------
> conf/vhosts.conf:
> --------------------------------------
> include vhosts/subdomain1.domain.com.conf;
> include vhosts/subdomain2.domain.com.conf;
> --------------------------------------
> 
> В subdomain1.domain.com.conf'е задается SSL сертификат:
> --------------------------------------
> server {
>  listen 443;
>  server_name subdomain1.domain.com www.subdomain1.domain.com;
> 
>  ssl on;
>  ssl_certificate certs/wildcard.crt;
>  ssl_certificate_key certs/wildcard.key;
>  ssl_session_timeout 5m;
> 
>  ssl_protocols SSLv2 SSLv3 TLSv1;
>  ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
>  ssl_prefer_server_ciphers on;
> 
>  location / {
>   proxy_pass http://subdomain1.domain.com/ ;
>   proxy_set_header  X-Real-IP  $remote_addr;
>  }
> 
>  location ~* ^.+\.(jpg|jpeg|gif|css|js)$ {
>  root /var/www/vhosts/sith-killer.x-shops.com/httpdocs;
>  access_log off;
>  expires 30d;
>  }
> }
> --------------------------------------
> vhosts/subdomain2.domain.com.conf:
> --------------------------------------
> server {
>  listen 443;
>  server_name subdomain2.domain.com www.subdomain2.domain.com domain2.com 
> www.domain2.com;
> 
>  ssl on;
>  ssl_certificate certs/domain2.com.crt;
>  ssl_certificate_key certs/domain2.com.key;
>  ssl_client_certificate certs/domain2.com.ca;
>  ssl_session_timeout 5m;
> 
>  ssl_protocols SSLv2 SSLv3 TLSv1;
>  ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
>  ssl_prefer_server_ciphers on;
> 
>  location / {
>   proxy_pass http://domain2.com/ ;
>   proxy_redirect off;
>   proxy_set_header Host $host;
>   proxy_set_header SSL YES;
>   proxy_set_header X-Real-IP  $remote_addr;
>   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
>   client_max_body_size 10m;
>   client_body_buffer_size 128k;
>   proxy_connect_timeout 90;
>   proxy_send_timeout 90;
>   proxy_read_timeout 90;
>   proxy_buffer_size 4k;
>   proxy_buffers 4 32k;
>   proxy_busy_buffers_size 64k;
>   proxy_temp_file_write_size 64k;
>  }
> 
>  location ~* ^.+\.(jpg|jpeg|gif|css|js)$ {
>  root /var/www/vhosts/domain2.com/httpdocs;
>  access_log off;
>  expires 30d;
>  }
> }
> --------------------------------------
> 
> Такое ощущение, что Nginx считывает переменную ssl_certificate только один 
> раз, а все последующие разы игнорирует. Хотя в таком случае он должен был 
> сказать что директива задана дважды.
> 
> P.S: не обращайте внимание на:
> 
> proxy_set_header SSL YES;
> 
> сделано для того, чтобы в дальнейшем в Апаче определить то, что пользователь 
> пришел с HTTPS через .htaccess, не прибегая к модификации кода. Всмысле вот 
> так:
> 
>        RewriteEngine on
>        RewriteCond %{HTTP:SSL} YES
>        RewriteRule .* - [E=HTTPS:on,L]
> 
> Всем спасибо.
> 
> -- 
> Sincerely yours,
> Driantsov Alexander,
> Technical Support Engineer
>  
> Qualiteam Software
> Glavpochtamt, p/o box 5152.   [web site] http://www.x-cart.com/
> 432072 Ulyanovsk, Russia      [ phone  ] +7-(8422)-429037  (9:00-18:00 GMT +4)
> 
> 

-- 
Игорь Сысоев
http://sysoev.ru



 




Copyright © Lexa Software, 1996-2009.