我遇到的问题与Linux有关,因为当从Windows运行相同的HTTP2客户端时不会发生这种情况。
$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 :(得分:1)
密码密钥协商期间出现问题。
使用TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256的Windows没有问题。
Linux因为尝试使用TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA而被拒绝。
我通过在Apache配置文件conf / extra / httpd-ssl.conf中提供可接受的密码来解决问题{/ 3}}。
简而言之,我更改了 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