Прокси HTTPS на nginx/1.5.4 собранный вручную vs nginx/1.5.7 из репозитория
Есть два сервера nginx к томуже с разными openssl 1. nginx и opensl собрана вручную (opensl нужна для поддержки ГОСТА), вот эти версии: nginx/1.5.4+OpenSSL 1.0.1e 11 Feb 2013 2. nginx и opensl установленаая из репозитория дебиана, вот эти версии: nginx/1.5.7+OpenSSL 0.9.8o 01 Jun 2010(пробовал так же OpenSSL 1.0.1e ) Оба сервера nginx с openssl установлены на одном хосте. В качестве бэкэнда стоит glassfish 3.1.1. При проксировании в связке конфигурации nginx и opensl (собранные вручную) все нормально проксируется. При проксировании в связке конфигурации nginx и opensl (установленные из репозитория) glassfish не проксируется, пишет "502 Bad Gateway". В логе видно: 2013/12/09 16:45:59 [info] 4630#0: *5 peer closed connection in SSL handshake while SSL handshaking to upstream, client: 192.168.44.151, server: localhost, request: "GET /ised HTTP/1.1", upstream: "https://127.0.0.1:8002/ised";, host: "myhost.lan.iac.spb.ru:8183" Замечу, что связка в конфигурации nginx и opensl (установленные из репозитория) прекрасно проксирует https на apache. Подскажите, как локализовать причину. Спасибо! Конфиг понятное дело одинаковый, разниза только в портах на которых он доступен, сам конфиг: server { listen *:8183 ssl; server_name myhost; ssl_certificate /data/cert-ssl/server.crt; ssl_certificate_key /data/cert-ssl/server.key; location / { proxy_pass https://localhost:8002; proxy_set_header Host $http_host; proxy_set_header X-Real-IP$remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto$scheme; } error_log /var/log/nginx/error.log debug; access_log /var/log/nginx/access.log main; } Posted at Nginx Forum: http://forum.nginx.org/read.php?21,245360,245360#msg-245360 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Прокси HTTPS на nginx/1.5.4 собранный вручную vs nginx/1.5.7 из репозитория
On 09.12.2013, at 16:55, mnsold wrote: > Подскажите, как локализовать причину. Попробуйте подключиться _штатным_ ( из пакетов ) s_client'ом к glassfish'у: openssl s_client -debug -connect localhost:8002 Посмотрите пройдет ли ssl handshake и если не пройдет, то почему. Посмотрите на glassfish'евский server.log, добавьте, если из лога не будет понятна причина, -Djavax.net.debug=ssl в список параметров для джавы. ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Прокси HTTPS на nginx/1.5.4 собранный вручную vs nginx/1.5.7 из репозитория
> Попробуйте подключиться _штатным_ ( из пакетов ) s_client'ом к glassfish'у: > openssl s_client -debug -connect localhost:8002 Включил > -Djavax.net.debug=ssl На данный момент openssl # openssl version OpenSSL 1.0.1e 11 Feb 2013 # dpkg -l|grep openssl ii openssl 1.0.1e-2 но nginx 1.5.7 использует все равно 0.9.8: # ldd `which nginx` linux-vdso.so.1 => (0x7fffae33d000) libpthread.so.0 => /lib/libpthread.so.0 (0x7fdd24f6b000) libcrypt.so.1 => /lib/libcrypt.so.1 (0x7fdd24d34000) libpcre.so.3 => /lib/libpcre.so.3 (0x7fdd24b03000) libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8 (0x7fdd248ac000) libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0x7fdd2450b000) libz.so.1 => /usr/lib/libz.so.1 (0x7fdd242f3000) libc.so.6 => /lib/libc.so.6 (0x7fdd23f91000) /lib64/ld-linux-x86-64.so.2 (0x7fdd25195000) libdl.so.2 => /lib/libdl.so.2 (0x7fdd23d8d000) nginx 1.5.4: # ldd `which /data/nginx-gost/sbin/nginx` linux-vdso.so.1 => (0x7fff695ff000) libpthread.so.0 => /lib/libpthread.so.0 (0x7ff4330f4000) libcrypt.so.1 => /lib/libcrypt.so.1 (0x7ff432ebd000) libpcre.so.3 => /lib/libpcre.so.3 (0x7ff432c8c000) libssl.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x7ff432a2d000) libcrypto.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x7ff432649000) libdl.so.2 => /lib/libdl.so.2 (0x7ff432444000) libz.so.1 => /usr/lib/libz.so.1 (0x7ff43222d000) libc.so.6 => /lib/libc.so.6 (0x7ff431ecb000) /lib64/ld-linux-x86-64.so.2 (0x7ff43331e000) # openssl s_client -connect localhost:8002 -tlsextdebug CONNECTED(0003) depth=0 C = US, ST = California, L = Santa Clara, O = Oracle Corporation, OU = GlassFish, CN = myhost.domain.local verify error:num=18:self signed certificate verify return:1 depth=0 C = US, ST = California, L = Santa Clara, O = Oracle Corporation, OU = GlassFish, CN = myhost.domain.local verify return:1 --- Certificate chain 0 s:/C=US/ST=California/L=Santa Clara/O=Oracle Corporation/OU=GlassFish/CN=myhost.domain.local i:/C=US/ST=California/L=Santa Clara/O=Oracle Corporation/OU=GlassFish/CN=myhost.domain.local --- Server certificate -BEGIN CERTIFICATE- MIICsDCCAhmgAwIBAgIEUTCRSzANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMC VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMRsw GQYDVQQKExJPcmFjbGUgQ29ycG9yYXRpb24xEjAQBgNVBAsTCUdsYXNzRmlzaDEf MB0GA1UEAxMWb2N0b3B1cy5sYW4uaWFjLnNwYi5ydTAeFw0xMzAzMDExMTMwMTla Fw0yMzAyMjcxMTMwMTlaMIGKMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZv cm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExGzAZBgNVBAoTEk9yYWNsZSBDb3Jw b3JhdGlvbjESMBAGA1UECxMJR2xhc3NGaXNoMR8wHQYDVQQDExZvY3RvcHVzLmxh bi5pYWMuc3BiLnJ1MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHZ0/bGIlY r12glRa0B8ykVXGuXtzbNr6cqOlQ5ELkyAlW1zwju/JSPxw00zy/elOep/VMFlAg K7Sp+xQYqueWgF6u+05K1FTZeQSsgVO3fSkwbBiX4ObUVawuZoTW0tUs8t1RLUm6 widfiIsFrEjrbMWJ5xqxMwBzMdQnyggN3wIDAQABoyEwHzAdBgNVHQ4EFgQUPsyT ixhlk4gfm5ripc8C1E+J8EwwDQYJKoZIhvcNAQEFBQADgYEAAuaaVnxJN4jsxqHT AAwNyJl0493xApcKnWCFjdugNbCMvv0ez2tYJ4xuQsG0G4rL/zPLATJvQbJM36TO JGXR4P3S/QIDFYDpy6cpCBqg/2P0c/vwh/mK5U10sWnrbfLUlh5sBCM1jza3/wtX /Vqm9py36r3NhaX7hF2KKLG1s7A= -END CERTIFICATE- subject=/C=US/ST=California/L=Santa Clara/O=Oracle Corporation/OU=GlassFish/CN=myhost.domain.local issuer=/C=US/ST=California/L=Santa Clara/O=Oracle Corporation/OU=GlassFish/CN=myhost.domain.local --- No client certificate CA names sent --- SSL handshake has read 1264 bytes and written 478 bytes --- New, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA Server public key is 1024 bit Secure Renegotiation IS NOT supported Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1 Cipher: EDH-RSA-DES-CBC3-SHA Session-ID: 52A5C7084B96822C644DA72CADECFADD2C8684AFE17E63158BD8EB90819682B1 Session-ID-ctx: Master-Key: ECB9F34696C2F27C330007773E9272D9FE539517AC74FD3E94F5CF105AA77BF2DFFEFEE93BE22066F68D42CB080F289F Key-Arg : None PSK identity: None PSK identity hint: None SRP username: None Start Time: 1386596104 Timeout : 300 (sec) Verify return code: 18 (self signed certificate) --- Если дедлаю запрос с nginx 1.5.7 (из репозитория), в логах glassfish'а: [#|2013-12-09T18:27:35.338+0400|INFO|oracle-glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=36;_ThreadName=Thread-2;|Using SSLEngineImpl.|#] [#|2013-12-09T18:27:35.338+0400|INFO|oracle-glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=36;_ThreadName=Thread-2;|http-thread-pool-8002(5), READ: TLSv1 Handshake, length = 89|#] [#|2013-12-09T18:27:35.339+0400|INFO|oracle-glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=36;_ThreadName=Thread-2;|http-thread-pool-8002(5), fatal error: 80: problem unwrapping net record javax.net.ssl
Re: Прокси HTTPS на nginx/1.5.4 собранный вручную vs nginx/1.5.7 из репозитория
On 09.12.2013, at 18:34, mnsold wrote: >> Попробуйте подключиться _штатным_ ( из пакетов ) s_client'ом к > glassfish'у: >> openssl s_client -debug -connect localhost:8002 > > Включил >> -Djavax.net.debug=ssl > > На данный момент openssl > # openssl version > OpenSSL 1.0.1e 11 Feb 2013 > # dpkg -l|grep openssl > ii openssl 1.0.1e-2 > > но nginx 1.5.7 использует все равно 0.9.8: Добавьте proxy_ssl_protocols SSLv3; Посмотрите, исчезнет ли проблема. Проблема, возможно, в том, что nginx с openssl 0.9.8 шлет session ticket, который вызывает ошибку в реализации SSL в java. Чтобы убедиться поставьте openssl из 0.9.8 и проверьте s_client c и без -no_ticket. openssl из 1.0.1e у вас тикет не шлет. ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Прокси HTTPS на nginx/1.5.4 собранный вручную vs nginx/1.5.7 из репозитория
> Добавьте > proxy_ssl_protocols SSLv3; Спасибо, эта директива помогла. Ниже написал решение Ранее я писал что пробовал nginx 1.5.7 с 1.0.1e-2, это оказалось не так, он все равно подгружал библиоетки openssl версии 0.9.8: # ldd `which nginx` linux-vdso.so.1 => (0x7fffae33d000) libpthread.so.0 => /lib/libpthread.so.0 (0x7fdd24f6b000) libcrypt.so.1 => /lib/libcrypt.so.1 (0x7fdd24d34000) libpcre.so.3 => /lib/libpcre.so.3 (0x7fdd24b03000) libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8 (0x7fdd248ac000) libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0x7fdd2450b000) libz.so.1 => /usr/lib/libz.so.1 (0x7fdd242f3000) libc.so.6 => /lib/libc.so.6 (0x7fdd23f91000) /lib64/ld-linux-x86-64.so.2 (0x7fdd25195000) libdl.so.2 => /lib/libdl.so.2 (0x7fdd23d8d000) Для работы с openssl 0.9.8 c glassfish (java) необходимо прописать директиву (доступна в nginx начиная с версии 1.5.6): proxy_ssl_protocols SSLv3; С данной дерективой https работает без проблем. Также проверена работа версии nginx 1.5.7 из другого репозитория которая скомпилирована с openssl 1.0 -> https работает без проблем c glassfish (java), директива "proxy_ssl_protocols SSLv3;" не нужна. # ldd `which nginx` linux-vdso.so.1 => (0x7fff5fccc000) libpthread.so.0 => /lib/libpthread.so.0 (0x7f0b1a48d000) libcrypt.so.1 => /lib/libcrypt.so.1 (0x7f0b1a256000) libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x7f0b1a018000) libssl.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x7f0b19db9000) libcrypto.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x7f0b199d5000) libz.so.1 => /usr/lib/libz.so.1 (0x7f0b197bd000) libc.so.6 => /lib/libc.so.6 (0x7f0b1945b000) /lib64/ld-linux-x86-64.so.2 (0x7f0b1a6b8000) libdl.so.2 => /lib/libdl.so.2 (0x7f0b19257000) Итого 2 решения проблемы: 1. в случае с openssl 0.9.8 используем параметр (доступна в nginx начиная с версии 1.5.6 proxy_ssl_protocols SSLv3; 2. ставим nginx который работает с openssl 1.0 Сергей, спасибо за помощь поисках решения проблемы. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,245360,245408#msg-245408 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru