2016-10-14 82 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。 爲什麼在Linux的情況下Apache發送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 /額外/的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