问题标签 [openssl-engine]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
678 浏览

ssl - 将 ENGINE 上下文附加到 SSL_CTX

我想知道是否有可能将ENGINE*实现附加到 aSSL_CTX*和/或SSL*结构。我想要实现的是使用SSL_CTX*OpenSSL 中内置的默认加密操作设置一个,另一个SSL_CTX*使用专用 HSM 作为加密层。

有一种方法可以实现这一目标吗?从我读到的内容可以注册并设置为默认一些加密操作(随机、密码、md 等),但那些已经设置的将被使用,而不是内置的。

egEVP_CipherInit_ex有它的第三个参数 an ENGINE*。以EVP_CIPHER_CTX*这种方式初始化的加密/解密将通过 ENGINE 实现处理加密/解密。

0 投票
0 回答
163 浏览

openssl - 如何使用 OpenSSL 构建安装 ecs_locl.h 和 ech_locl.h 头文件?

当您使用传统命令构建和安装 openssl 时,主题中定义“struct ecdsa_method”和“struct ecdh_method”的两个标头不会复制到目标目录:

但是,使用这些结构的类型,例如 ECDSA_METHOD 和 ECDH_METHOD 是在 ecdsa.h 中定义的,该文件被复制到目标目录中。当您尝试编译使用上述任何类型的代码时,它会导致令人困惑的“不完整的变量定义”错误。如果尝试构建一个实施了 ECDSA 和 ECDH 方法的 openssl 引擎,您将不可避免地遇到此错误。

我检查了 config 生成的 Makefile,发现在安装过程中使用了一个名为 EXHEADERS 的变量,但我没有找到通过“config”选项填充它的常规方法。

解决方法是手动将缺少的标头从源树复制到目标目录,但我不喜欢这种“解决方案”。

0 投票
2 回答
292 浏览

ssl - 如何在没有可导出私钥的情况下进行 ECDHE 握手

我正在构建一个实现 ECDSA_METHOD 的 OpenSSL 引擎,其中包括签名创建和签名验证功能。由于 ECDHE 私钥的唯一用途与签名创建有关,因此不需要从引擎中导出密钥并将其显示在其他任何地方。

但是,如果我不通过 SSL_set_private_key 函数向 SSL_Context 提供私钥,则 SSL 握手失败并出现以下错误:

我还尝试向 SSL_set_private_key 函数提供一个模拟密钥(与证书中的公钥无关的密钥),但此函数确实验证私钥/公钥是否匹配,如果它们不匹配,则会引发关于错误证书的错误吨。

看起来 openssl 在某些情况下允许绕过此验证,例如,这是我在 ssl/ssl_rsa.c 中找到的

我想,我需要一个类似的 EC 密钥,但我在任何地方都找不到。任何其他解决方案也值得赞赏。

0 投票
1 回答
572 浏览

openssl - 为什么openssl引擎的引用计数如此之高?

在 openssl 引擎 API 中有一个名为 ENGINE_finish(e) 的清理命令,它调用在引擎 e 中实现和注册的“完成”命令。

仅当对引擎的引用计数等于 1 时才会调用引擎的“完成”命令。我不明白为什么在我的情况下它是 3。当您使用 libcurl 时,引用计数也会在您调用后增加一一个 POST 方法,它将是 4。

为了确保调用“完成”命令,我需要运行如下所示的丑陋循环,我不知道它是否会对其他组件造成潜在损坏:

我已经删除了我的初始代码来演示错误并使其变得非常简单。“虚拟”引擎的代码和客户端的代码如下。请让我知道如何使 ENGINE_finish 在没有上面丑陋的代码的情况下工作,以及为什么 ref count 等于 3 而它应该是 1。

虚拟引擎:

客户代码:

输出如下所示。它在初始化时为 0,然后以某种方式被撞到 3。

0 投票
1 回答
823 浏览

openssl - Windows 上用于 CUDA 的 OpenSSL 引擎

如何向 OpenSSL API 添加一些新功能,以便将 GPU 用于我编写的某些加密算法(AES、RSA 等)?例如,我想使用命令openssl -engine cuda_engine genrsa -out rsa.key 1024和 OpenSSL 来使用我的genrsaCUDA 代码而不是原始代码。我不得不提到我想在 64 位的 Windows 7 SP1 上执行此操作。即使是虚拟解决方案也会有所帮助,因为我需要了解机制。

0 投票
2 回答
341 浏览

ios - 未加载适用于 iOS 的 Openssl 引擎

我们有一个项目需要在 iOS 设备上运行一个 openssl 引擎。我们已经为测试引擎编译了 .so 文件,它可以在命令行中正常工作。但是当我们把它放到iOS项目中并尝试加载引擎时,加载步骤总是报错。

myEngine将远去NULL。我怀疑 iOS 不允许这样的动态库。有没有人有经验如何使 OpenSSL 引擎在 iOS 上工作?

0 投票
0 回答
360 浏览

openssl - openssl CAPI Engine dll 未在 openssl 版本 1.0.1x 中生成

我正在尝试capi engine使用 Windows 证书存储。使用的 openssl 版本是1.0.1x.

会计。据我所知,0.9.8默认情况下不编译 CAPI 引擎,因此我们必须使用开关enable-capieng来编译它,并且没有生成引擎 dll,因此它将被内置到libeay32.dll

但是在v1.0.1x,我认为CAPI engine是默认编译并capi.dll生成引擎dll ie。但在我的情况下,它不会生成。那么这可能是什么原因呢?我也应该使用 switchenable-capieng吗?

0 投票
1 回答
4802 浏览

openssl - DSO 支持例程和多个 OpenSSL 加载错误

我想构建一个 OpenSSL RSA 引擎,从这个现有的源代码文件开始,这是英特尔实现的一种更快的方法。首先,我想构建这段代码,所以我使用这些命令:

...并且没有出现错误。然后,当我尝试使用以下命令测试引擎时:

...我收到以下错误:

在这一点上,我想我没有使用正确的标志,并且构建引擎的命令可能不完整。
我需要做什么才能完成这项工作?

0 投票
1 回答
1058 浏览

openssl - OpenSSL RSA 引擎 - RSA 验证失败

下面是我想做的最小、完整和可验证的示例。
基本上我想实现一个集成了一些 CUDA 代码的 OpenSSL RSA 引擎。CUDA 部分应该进行模幂运算,但在此示例中并不重要,因此我只是使用BN_mod_exp(请参阅 engine.c 文件,modexp函数)来简化代码。我提供的代码是我的项目的简化版本,可以使用以下命令非常轻松地构建/编译它:

...最后一个命令的输出表明 RSA 引擎可用

...接下来的两个文件用于演示目的,正在复制我的项目

...

现在我想使用一些速度测试

我收到下一个错误

我在互联网上搜索了这些错误,但没有成功。我的问题是:我怎样才能摆脱这种“RSA 验证失败。不会进行 RSA 验证”。错误?似乎 OpenSSL 不信任我的实现之类的。
我已经删除了我之前的帖子,因为它无法编译和验证。任何安装了 OpenSSL 和 CUDA[可选] 的人都可以验证此示例。但是由于 CUDA 部分在这个例子中并不重要并且有人想尝试它,他/她必须从文件中注释掉#include "my_cuda.h"and并相应地更改构建过程,即:modexp512();engine.c

并尝试相同的命令

0 投票
2 回答
6063 浏览

apache - 配置 Apache 服务器以使用特定的 OpenSSL 引擎

我有一个可用的 OpenSSL RSA 引擎(即一个.so文件)和一个配置为 SSL 模式的 Apache 服务器。
如何让 Apache 使用我的 RSA 引擎中的 RSA 实现?换句话说:我将引擎(.so文件)放在哪里,如何修改openssl.cnf文件以及如何构建 Apache?