Отправить несколько запросов HTTP2.0 - PullRequest
1 голос
/ 28 марта 2020

Как я могу отправить несколько запросов HTTP2.0 для одного SSL-соединения?

Я попробовал следующее и HTTP1.1 работает нормально, но HTTP2.0 не работает.

$ openssl s_client -alpn h2 -connect navaztheking.com:443 
CONNECTED(00000003)
depth=4 C = US, O = "Starfield Technologies, Inc.", OU = Starfield Class 2 Certification Authority
verify return:1
depth=3 C = US, ST = Arizona, L = Scottsdale, O = "Starfield Technologies, Inc.", CN = Starfield Services Root Certificate Authority - G2
verify return:1
depth=2 C = US, O = Amazon, CN = Amazon Root CA 1
verify return:1
depth=1 C = US, O = Amazon, OU = Server CA 1B, CN = Amazon
verify return:1
depth=0 CN = navaztheking.com
verify return:1
---
Certificate chain
 0 s:/CN=navaztheking.com
   i:/C=US/O=Amazon/OU=Server CA 1B/CN=Amazon
 1 s:/C=US/O=Amazon/OU=Server CA 1B/CN=Amazon
   i:/C=US/O=Amazon/CN=Amazon Root CA 1
 2 s:/C=US/O=Amazon/CN=Amazon Root CA 1
   i:/C=US/ST=Arizona/L=Scottsdale/O=Starfield Technologies, Inc./CN=Starfield Services Root Certificate Authority - G2
 3 s:/C=US/ST=Arizona/L=Scottsdale/O=Starfield Technologies, Inc./CN=Starfield Services Root Certificate Authority - G2
   i:/C=US/O=Starfield Technologies, Inc./OU=Starfield Class 2 Certification Authority
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIFfTCCBGWgAwIBAgIQCMMRr5cgu+75Ro2AzlH5LTANBgkqhkiG9w0BAQsFADBG
MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRUwEwYDVQQLEwxTZXJ2ZXIg
Q0EgMUIxDzANBgNVBAMTBkFtYXpvbjAeFw0xOTA4MDcwMDAwMDBaFw0yMDA5MDcx
MjAwMDBaMBsxGTAXBgNVBAMTEG5hdmF6dGhla2luZy5jb20wggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQCmF1rs6DUFGbwW1Ndxg6BQCvH1JIUFXc2KLou5
/5phrk5LybTSXyPEEQ+7ztpYAeBVv5uETtG3huDJwA2v1Vcs8JGEM+h1q0yBYv9t
wpUDv/tIkAdJbkOtZKBnhpe81CQzpm+/ZPPy9QsCq18YQy+zK88N0j5wHoeV2MiK
V3oCXNIATi9klbSUik1F4Gov+0jyzj9yUzdxJzmu9zGye9Bt++lQKxZnTTfuYyIc
k97fvPhMCNWgw5ADT2XiRZU4m7aGFpeTzD1CCZ1J4dNiqAB+1RqF0QQXOWH0/xhF
KgovhVL8p00mbj7OvEwVBkUBYZ3qBXLQNqPAjC5S+5JCooBfAgMBAAGjggKQMIIC
jDAfBgNVHSMEGDAWgBRZpGYGUqB7lZI8o5QHJ5Z0W/k90DAdBgNVHQ4EFgQUG741
bQo4YFNwTRqV6WFp4R5hJwowLwYDVR0RBCgwJoIQbmF2YXp0aGVraW5nLmNvbYIS
Ki5uYXZhenRoZWtpbmcuY29tMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggr
BgEFBQcDAQYIKwYBBQUHAwIwOwYDVR0fBDQwMjAwoC6gLIYqaHR0cDovL2NybC5z
Y2ExYi5hbWF6b250cnVzdC5jb20vc2NhMWIuY3JsMCAGA1UdIAQZMBcwCwYJYIZI
AYb9bAECMAgGBmeBDAECATB1BggrBgEFBQcBAQRpMGcwLQYIKwYBBQUHMAGGIWh0
dHA6Ly9vY3NwLnNjYTFiLmFtYXpvbnRydXN0LmNvbTA2BggrBgEFBQcwAoYqaHR0
cDovL2NydC5zY2ExYi5hbWF6b250cnVzdC5jb20vc2NhMWIuY3J0MAwGA1UdEwEB
/wQCMAAwggEEBgorBgEEAdZ5AgQCBIH1BIHyAPAAdgDuS723dc5guuFCaR+r4Z5m
ow9+X7By2IMAxHuJeqj9ywAAAWxrs26bAAAEAwBHMEUCIQC0tUq2oMfynAUhKNgg
+pdFlduX5H0tw8ovu3ss59lUcAIgZXfF1RVQqReLzgUAcIJNsdf3A2QTWQJHEUFp
/TdmP/EAdgCHdb/nWXz4jEOZX73zbv9WjUdWNv9KtWDBtOr/XqCDDwAAAWxrs27o
AAAEAwBHMEUCIQDwk2wAvG5tn0h3Qfr+E4Ijo+avACPP7WcewK3hJxV5fgIgFW8C
dXGq86Cn97G469Bii/fV4d8wlYTf9xcx8M61ZLkwDQYJKoZIhvcNAQELBQADggEB
ACXOYZSjkDC/652mOpH00ss105vd3OA/P08HVD6xG/5fouhrQqm2N7dLQ9UyjsrI
SGHXA0+vTj/K99zaHYMohCVI+b230pDrpeVEgfnxTnthYtQfEF4eJ9ZWGPCD6mEk
TzpT+McC28V0+2Zsq/xsxbZFWw3duhzcuBSDtOpZljmNb70BzCHnf5aSeC3QQJJe
gZoIY/2RxSWw28KfPhjv63XH7LOSFAAOv5CakB4QnneZosgUDmPXDTrY9C80Xyr7
fDw1TMUb9hRuxlaI6mW9hoGiQc4LbKFpDjUkBZSFORUNqg0DRBMjpM4CNKMO6ioN
bHiPa464s/w8/3efHuZiHDw=
-----END CERTIFICATE-----
subject=/CN=navaztheking.com
issuer=/C=US/O=Amazon/OU=Server CA 1B/CN=Amazon
---
No client certificate CA names sent
Peer signing digest: SHA512
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 5517 bytes and written 424 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
ALPN protocol: h2
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES128-GCM-SHA256
    Session-ID: B37B036FD3108D8EFDB901B41323D299EF58ADC0019A13EEECEE7095012E4D10
    Session-ID-ctx: 
    Master-Key: 3B02A6F37CA6BA14B08ABCD938341AB34EAE91FC8C65AB79C7B05CB327D251F5DFF3DDBC80E9075301A676DCE36A57DE
    Key-Arg   : None
    Krb5 Principal: None
    PSK identity: None
    PSK identity hint: None
    TLS session ticket lifetime hint: 43200 (seconds)
    TLS session ticket:
    0000 - 50 57 60 48 e6 b5 66 0c-bf 27 34 8c f8 f6 8b 1d   PW`H..f..'4.....
    0010 - 6d c6 08 20 08 9e 2b cf-0d 85 6a 2f a7 51 b6 a2   m.. ..+...j/.Q..
    0020 - 0e 17 bf a9 fb a4 47 aa-60 42 6e c3 48 6a b0 dc   ......G.`Bn.Hj..
    0030 - bb 73 64 41 e2 b4 73 68-94 12 c0 9b 73 32 34 15   .sdA..sh....s24.
    0040 - 2d 2c 23 9e 91 f6 84 d6-8b 8c 33 4b 05 91 16 de   -,#.......3K....
    0050 - fb bb 74 e9 a6 ac 47 0b-8e 5b aa 89 b7 4b 79 d3   ..t...G..[...Ky.
    0060 - 5e e8 4f d6 d6 29 4c b5-81 c5 6b be f0 20 e9 98   ^.O..)L...k.. ..
    0070 - dd 71 a1 86 cb ff bf d9-39 04 0b 2d c6 47 ce 60   .q......9..-.G.`
    0080 - d3 05 a6 d7 b6 d1 6e 96-75 01 0d 3d 79 d4 9a 06   ......n.u..=y...
    0090 - eb e6 fa be 37 9e fa 5c-94 5e 93 ce 65 a8 bf 4b   ....7..\.^..e..K
    00a0 - ea 83 0f e4 20 a8 7a 47-b1 d8 b7 c7 e6 e6 59 ce   .... .zG......Y.

    Start Time: 1585344503
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
????
GET / HTTP/1.1
Host: navaztheking.coclosed
$

Как вы видите выше, просто «закройте» соединение. захват пакета показывает, что клиент не отправляет запрос. Как я могу этого добиться.

Я попробовал "curl --http2", который работает, но я не могу отправить несколько запросов на curl.

1 Ответ

1 голос
/ 29 марта 2020

Вы не отправляете запрос HTTP/2 в этом примере. Вы создаете соединение TLS, используя идентификатор протокола приложения для HTTP / 2, но затем отправляете незашифрованные данные в формате HTTP / 1.1. Это не будет принято конечной точкой HTTP / 2, и соединение будет просто закрыто.

Для отправки одного (или нескольких) запросов HTTP / 2 вам необходимо использовать библиотеку, которая отправляет запросы в правильный формат HTTP / 2.

curl - это библиотека и инструмент CLI, который может отправлять правильные запросы HTTP / 2. Для отправки нескольких запросов с версией CLI вы можете использовать опцию --next.

...