发送多个HTTP2.0请求

问题描述 投票:1回答:1

如何在单个SSL连接上发送多个HTTP2.0请求?

我尝试了以下操作,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上发送多个请求。

curl openssl http2 nghttp2
1个回答
0
投票

在此示例中,您没有发送HTTP/2请求。您正在使用HTTP / 2的应用程序协议标识符创建TLS连接,但是随后以HTTP / 1.1格式发送纯文本数据。这将不会被HTTP / 2端点接受,并且连接只会被关闭。

为了发送一个(或多个)HTTP / 2请求,您将需要使用一个以正确的HTTP / 2格式发送请求的库。

curl是一个库和CLI工具,可以发送正确的HTTP / 2请求。为了使用CLI版本发送多个请求,您可能可以使用--next选项。

© www.soinside.com 2019 - 2024. All rights reserved.