如何禁用ALPN扩展?

How to disable ALPN extension?

本文关键字:扩展 ALPN 何禁用      更新时间:2023-10-16

据此,在libcurl中,默认情况下启用CURLOPT_SSL_ENABLE_ALPN选项。对于一个项目,我正在尝试禁用 ALPN 扩展,如下所示:

CURLcode res = CURLE_OK;
res = curl_easy_setopt(curl_, CURLOPT_SSL_ENABLE_ALPN, 0L);
if(res == CURLE_OK){
cout<<"Set CURLOPT_SSL_ENABLE_ALPN to 0L res = "<<res;
}else{
cout<<"Set CURLOPT_SSL_ENABLE_ALPN to 1L  res = "<<res<<"t"<<curl_easy_strerror(res);
}

这给我抛出了一个错误:

Set CURLOPT_SSL_ENABLE_ALPN to 1L  res = 48   An unknown option was passed in to libcurl

而且,我可以看到TLS握手中存在的ALPN扩展,能够用Wireshark看到它。如何禁用 ALPN 扩展?Openssl 版本: OpenSSL 1.1.0k 卷曲版本:7.67.0

在libcurl中,所有可能的选项都#define在标题中,但这并不意味着所有选项都受支持。

看起来您的libcurl不是使用 HTTP2 支持 (libnghttp2( 构建的。

为了使 ALPN 或 NPN 实际工作,curl_version_info()应该包括CURL_VERSION_HTTP2

显然,如果你不使用支持 HTTP2 的 libcurl (libnghttp2( 进行编译,它会将CURLOPT_SSL_ENABLE_ALPNCURLOPT_SSL_ENABLE_NPN视为未知选项,尽管 ALPN 和 NPN 独立于 HTTP2。这是 libcurl 中的一个错误。 我已经在这里的libcurl github存储库中报告了这种行为,他们修复了它,并且修复将在下一个版本中提供。