ПРОЕКТЫ 


  АРХИВ 


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]

Проброс SSL-аутентификации на backend


  • To: nginx-ru@xxxxxxxxx
  • Subject: Проброс SSL-аутентификации на backend
  • From: Бондарец Иван <bondarets@xxxxxxxxx>
  • Date: Sat, 5 Sep 2009 13:36:22 +0400
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:from:date:message-id :subject:to:content-type; bh=FX/boDqXCF4XqPlnlzZVrYbQHTT+0z2i3P2QUAFC6l0=; b=EXvYjSglH7KQFRPAKKRTLZAassfdw5xJ+mB6uu8B+nUtlJ4zQ1XgRDlWKrmbCg0Zhc bkO3c+9iRdKxH/6OG8oArJ5xhsygYIapZuL6gs00ValBi0MKFhgMYzX/pmJ76l6q+O7K i6VWItpoaJxNIxYCC3VMXPW3afUQ01UV74TSY=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:from:date:message-id:subject:to:content-type; b=ZcgzwgtxXXU4FdxcYZd1+ZXKEvc226frkaVaVJQrWUAmSeSchh6BV1oGzp/M4f4HA4 HmSzocz9Ix0hCDtwt3qht7NvmMIvGw1/olUcdJDZ3TjsbAoB6AKUyjxR9FNpjyfRlQg0 gvvIxdlsZXAc3Cnt8d+XS+xWvYMsJCYUC2ATY=

Добрый день!
Есть стандартная схема:
Интернет -> nginx --> backend (Apache либо WebSphere)
nginx сейчас терминирует на себе ssl и проксирует на backend.
Возникла задачка аутентифицировать пользователей на некоторых разделах сайта на backend'e при помощи сертификатов. Можно ли настроить nginx на такой режим работы? В моем понимании, на backend'е нужно поднять ssl (с более слабым ключом, например) и настроить авторизацию по сертификатам, это я сделал:
SSLEngine on
SSLCipherSuite ALL:!ADH:!DH:!EDH:!KRB5:!IDEA:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /etc/apache2/ssl.crt/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl.key/apache.key
SSLProtocol +SSLv3 +TLSv1
SSLVerifyClient require
SSLCACertificateFile /path/to/ca.crt

 Далее в конфиге nginx пишу:
    server {
        listen       443;
        server_name  test1;
        ssl                  on;
        ssl_certificate      /etc/apache2/ssl.crt/apache.crt;
        ssl_certificate_key  /etc/apache2/ssl.key/apache.key;

        ssl_session_timeout  5m;

        ssl_protocols  SSLv2 SSLv3 TLSv1;
        ssl_ciphers  ALL:!ADH:!DH:!EDH:!KRB5:!IDEA:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL;
        ssl_prefer_server_ciphers   on;
        location / {
        proxy_pass   https://1.2.3.4:443;
            }
   
       }

Проверяю аутентификацию при обращении непосредственно к backend'у - на IE6,7,8 и Safari 4.0.2 работает, на FF 3.5.2, Opera 10, Chrome - не работает, пишет что-то вроде этого:
SSL-узлу не удалось договориться о приемлемом наборе параметров безопасности.
(Код ошибки: ssl_error_handshake_failure_alert)

Пробую через nginx, соответственно тоже не работает, в логе nginx пишет:
[error] 14221#0: *106 SSL_do_handshake() failed (SSL: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure) while SSL handshaking to upstream

Как это поправить? И вообще реализуема ли задачка, описанная в начале? Т.е. аутентификация пользователей именно на backend'е?


 




Copyright © Lexa Software, 1996-2009.