通过curl::curl_fetch_memory()使用R和httr2时出现错误:! OpenSSL/3.1.4:错误:1C8000E9:提供程序例程::ems 未启用

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

BLUF:我的一些(但不是全部)

httr2
请求导致了错误

Failed to perform HTTP request. Caused by error in `curl::curl_fetch_memory()`: ! OpenSSL/3.1.4: error:1C8000E9:Provider routines::ems not enabled

我很难找到有关此特定错误的信息或启用“EMS”例程。这可能是我的

OpenSSL
安装、服务器配置或其他问题吗?

其他可能相关的详细信息

我正在使用 apache 和 docker 服务运行一个 AWS EC2 实例,该服务托管一个运行闪亮服务器和我的应用程序的 docker 容器。我的应用程序使用

httr2
来调用 Web API。 dockerized 应用程序在本地计算机上运行时运行良好,但在 EC2 实例上运行时出现奇怪的错误:

Failed to perform HTTP request. Caused by error in `curl::curl_fetch_memory()`: ! OpenSSL/3.1.4: error:1C8000E9:Provider routines::ems not enabled

这个错误似乎只发生在特定的 URL 上,其他的似乎工作正常。我还可以登录托管实例并直接使用curl成功调用有问题的URL之一。

我试图弄清楚这个问题是否与我的容器安装或 OpenSSL 配置有关,与我的 EC2 实例配置有关,或者与 AWS 上下文中的闪亮服务器和/或

httr2
相关。

r curl openssl shiny-server httr2
1个回答
0
投票

EMS 代表扩展主密钥,如 rfc7627 中所定义。它是广泛部署的 TLS 扩展。任何最新的 TLS 服务器都应该能够支持这一点(EMS 于 2015 年实现标准化)。 EMS 仅与 TLSv1.2(或更低版本)相关,不适用于 TLSv1.3

当 OpenSSL 配置为使用 FIPS 提供程序时,会出现此错误。 FIPS 合规性需要某些最低标准。在这种情况下,如果使用 TLSv1.2,则还必须使用 EMS。 这可能意味着您要连接的服务器 (a) 不支持 TLSv1.3,并且 (b) 也不支持 TLS EMS 扩展。

假设您确实需要与您尝试连接的服务器对话,唯一真正的解决方案是 (1) 禁用此连接的 OpenSSL FIPS 提供程序或 (2) 让服务器运营商升级其服务器。

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