标签: alpn

“服务器证书验证正常”但“ALPN,服务器不同意协议”

我正在拨打 curl 电话

curl -v ... https://... 
Run Code Online (Sandbox Code Playgroud)

并且详细输出包含

....
* ALPN, offering http/1.1
* SSL connection using TLS1.2 / ECDHE_RSA_AES_128_GCM_SHA256
*    server certificate verification OK
....
* ALPN, server did not agree to a protocol
* Server auth using Basic with user 'api'
> POST /v3/pindertek.com/messages HTTP/1.1
> Host: api.mailgun.net
> Authorization: Basic sdfsdfsdfsadfsdfsdfsadfsadfsadfsdfsdfasdfsdf=
....
< HTTP/1.1 100 Continue
< HTTP/1.1 200 OK
......
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  • 发送的授权数据是否加密?
  • 发送的授权后内容是否加密?

可以看到TLS证书验证成功。但是随后的消息“ALPN,服务器不同意协议”“使用 Basic 和用户 'api' 的服务器身份验证”并不能激发充分的信心。

我希望它只是指在 TLS 加密协议下/内/上使用的单独层协议,但我不知道。


更详细的详细输出: …

ssl https curl http-basic-authentication alpn

12
推荐指数
1
解决办法
4万
查看次数

ALPN,服务器不同意协议是什么意思?

在 curl 中使用各种调用时,我经常看到这一点。

我不确定它是否是我的某些退货导致错误 400 的根本原因,但作为一个新手只是好奇比什么都重要。

php http-status-code-404 apache-2.4 ubuntu-16.04 alpn

7
推荐指数
1
解决办法
1万
查看次数

ALPN 协商选择 http/1.1 而不是 h2

我创建了一个带有“LAMP 18.04”预设的 DigitalOcean Droplet 并进行了所有更新。配置新的虚拟主机并使用 certbot 配置 HTTPS。到目前为止一切都工作正常。然后我尝试启用 HTTP2:

  • a2enmod http2
  • 添加Protocols h2 http/1.1HTTPS虚拟主机

但是,浏览器在连接到站点时仍然使用 HTTP/1.1(禁用缓存)。运行时curl --http2 -v https://example.com(域混淆)将打印以下内容:

* Connected to example.com (1.1.1.1) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
...
* SSL connection using TLSv1.2 / ECDHE-RSA-CHACHA20-POLY1305
* ALPN, server accepted to use http/1.1

... And in headers:
< Upgrade: h2
< Connection: Upgrade
Run Code Online (Sandbox Code Playgroud)

此外,https://tools.keycdn.com/http2-test显示以下内容:

HTTP2测试工具截图

我的问题是 - 为什么选择 http/1.1?另外,为什么该工具认为 HTTP2/ALPN 已禁用?这是完整的 VHost 配置:

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerName …
Run Code Online (Sandbox Code Playgroud)

https apache-2.4 alpn

4
推荐指数
1
解决办法
2万
查看次数