2016-10-14 4 views
0

Проблема, с которой я связан, связана с Linux, поскольку она не возникает, когда один и тот же клиент HTTP2 запускается из Windows.Не удается установить соединение HTTP/2 с клиентом OkHTTP/ALPN/Linux с Apache HTTP

$java -jar -Xbootclasspath/p:alpn-boot-8.1.9.v20160720.jar SampleOkHttp-1.0.jar https://192.168.1.10:8080/simple.html 

HTTP/2 предисловия связь:

Окно

>> CONNECTION 505249202a20485454502f322e300d0a0d0a534d0d0a0d0a 
>> 0x00000000  6 SETTINGS 
>> 0x00000000  4 WINDOW_UPDATE 
<< 0x00000000  6 SETTINGS 
<< 0x00000000  4 WINDOW_UPDATE 
>> 0x00000003 69 HEADERS  END_STREAM|END_HEADERS 
>> 0x00000000  0 SETTINGS  ACK 
<< 0x00000000  0 SETTINGS  ACK 
<< 0x00000003 86 HEADERS  END_HEADERS 
<< 0x00000003 220 DATA   END_STREAM 
h2 
<< 0x00000000  8 GOAWAY 

Linux

>> CONNECTION 505249202a20485454502f322e300d0a0d0a534d0d0a0d0a 
>> 0x00000000  6 SETTINGS  
>> 0x00000000  4 WINDOW_UPDATE 
>> 0x00000003 69 HEADERS  END_STREAM|END_HEADERS 
<< 0x00000000  6 SETTINGS  
>> 0x00000000  0 SETTINGS  ACK 
<< 0x00000000  8 GOAWAY   
<< 0x00000000  4 WINDOW_UPDATE 
<< 0x00000000  8 GOAWAY 

Пробовал с Ubuntu \ Fedora, из локальной \ удаленной машины, с различными Java \ alpn версии. Я все еще получаю GOAWAY. Почему Apache в случае Linux отправляет сообщение GOAWAY? Как это исправить?

+0

GOAWAY кадр содержит код ошибки и дополнительные данные отладки, вы могли бы сбросить их? https://tools.ietf.org/html/rfc7540#section-6.8 –

+0

Есть ли простой способ получить отладочные данные по библиотеке okhttp? –

ответ

1

Проблема возникла во время согласования ключа шифрования.

У Windows с TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 проблем не было.

Linux был отклонен, потому что пытался использовать TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA.

Я решил проблему, предоставив приемлемые ключи шифрования в конфигурационном файле Apache conf/extra/httpd-ssl.conf, описанном here.

Короче я изменил настройки по умолчанию для SSLCipherSuite на:

SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK 
Смежные вопросы