Прокси HTTPS на nginx/1.5.4 собранный вручную vs nginx/1.5.7 из репозитория

2013-12-09 Thread mnsold
Есть два сервера 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 из репозитория

2013-12-09 Thread Sergey Budnevitch

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 из репозитория

2013-12-09 Thread mnsold
> Попробуйте подключиться _штатным_ ( из пакетов ) 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 из репозитория

2013-12-09 Thread Sergey Budnevitch

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 из репозитория

2013-12-10 Thread mnsold
> Добавьте
> 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