Добрый день!<br>Есть стандартная схема:<br>Интернет -> nginx --> backend (Apache либо WebSphere)<br>nginx сейчас терминирует на себе ssl и проксирует на backend.<br>Возникла задачка аутентифицировать пользователей на некоторых разделах сайта на backend'e при помощи сертификатов. Можно ли настроить nginx на такой режим работы? В моем понимании, на backend'е нужно поднять ssl (с более слабым ключом, например) и настроить авторизацию по сертификатам, это я сделал:<br>
SSLEngine on<br>SSLCipherSuite ALL:!ADH:!DH:!EDH:!KRB5:!IDEA:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL<br>SSLCertificateFile /etc/apache2/ssl.crt/apache.crt<br>SSLCertificateKeyFile /etc/apache2/ssl.key/apache.key<br>
SSLProtocol +SSLv3 +TLSv1<br>SSLVerifyClient require<br>SSLCACertificateFile /path/to/ca.crt<br><br> Далее в конфиге nginx пишу:<br> server {<br> listen 443;<br> server_name test1;<br> ssl on;<br>
ssl_certificate /etc/apache2/ssl.crt/apache.crt;<br> ssl_certificate_key /etc/apache2/ssl.key/apache.key;<br><br> ssl_session_timeout 5m;<br><br> ssl_protocols SSLv2 SSLv3 TLSv1;<br> ssl_ciphers ALL:!ADH:!DH:!EDH:!KRB5:!IDEA:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL;<br>
ssl_prefer_server_ciphers on;<br> location / {<br> proxy_pass <a href="https://1.2.3.4:443">https://1.2.3.4:443</a>;<br> }<br> <br> }<br><br>Проверяю аутентификацию при обращении непосредственно к backend'у - на IE6,7,8 и Safari 4.0.2 работает, на FF 3.5.2, Opera 10, Chrome - не работает, пишет что-то вроде этого:<br>
SSL-узлу не удалось договориться о приемлемом наборе параметров безопасности.<br>(Код ошибки: ssl_error_handshake_failure_alert)<br><br>Пробую через nginx, соответственно тоже не работает, в логе nginx пишет:<br>[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<br>
<br>Как это поправить? И вообще реализуема ли задачка, описанная в начале? Т.е. аутентификация пользователей именно на backend'е?<br>