问题标签 [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.
ssl - 将 ENGINE 上下文附加到 SSL_CTX
我想知道是否有可能将ENGINE*
实现附加到 aSSL_CTX*
和/或SSL*
结构。我想要实现的是使用SSL_CTX*
OpenSSL 中内置的默认加密操作设置一个,另一个SSL_CTX*
使用专用 HSM 作为加密层。
有一种方法可以实现这一目标吗?从我读到的内容可以注册并设置为默认一些加密操作(随机、密码、md 等),但那些已经设置的将被使用,而不是内置的。
egEVP_CipherInit_ex
有它的第三个参数 an ENGINE*
。以EVP_CIPHER_CTX*
这种方式初始化的加密/解密将通过 ENGINE 实现处理加密/解密。
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”选项填充它的常规方法。
解决方法是手动将缺少的标头从源树复制到目标目录,但我不喜欢这种“解决方案”。
ssl - 如何在没有可导出私钥的情况下进行 ECDHE 握手
我正在构建一个实现 ECDSA_METHOD 的 OpenSSL 引擎,其中包括签名创建和签名验证功能。由于 ECDHE 私钥的唯一用途与签名创建有关,因此不需要从引擎中导出密钥并将其显示在其他任何地方。
但是,如果我不通过 SSL_set_private_key 函数向 SSL_Context 提供私钥,则 SSL 握手失败并出现以下错误:
我还尝试向 SSL_set_private_key 函数提供一个模拟密钥(与证书中的公钥无关的密钥),但此函数确实验证私钥/公钥是否匹配,如果它们不匹配,则会引发关于错误证书的错误吨。
看起来 openssl 在某些情况下允许绕过此验证,例如,这是我在 ssl/ssl_rsa.c 中找到的
我想,我需要一个类似的 EC 密钥,但我在任何地方都找不到。任何其他解决方案也值得赞赏。
openssl - 为什么openssl引擎的引用计数如此之高?
在 openssl 引擎 API 中有一个名为 ENGINE_finish(e) 的清理命令,它调用在引擎 e 中实现和注册的“完成”命令。
仅当对引擎的引用计数等于 1 时才会调用引擎的“完成”命令。我不明白为什么在我的情况下它是 3。当您使用 libcurl 时,引用计数也会在您调用后增加一一个 POST 方法,它将是 4。
为了确保调用“完成”命令,我需要运行如下所示的丑陋循环,我不知道它是否会对其他组件造成潜在损坏:
我已经删除了我的初始代码来演示错误并使其变得非常简单。“虚拟”引擎的代码和客户端的代码如下。请让我知道如何使 ENGINE_finish 在没有上面丑陋的代码的情况下工作,以及为什么 ref count 等于 3 而它应该是 1。
虚拟引擎:
客户代码:
输出如下所示。它在初始化时为 0,然后以某种方式被撞到 3。
openssl - Windows 上用于 CUDA 的 OpenSSL 引擎
如何向 OpenSSL API 添加一些新功能,以便将 GPU 用于我编写的某些加密算法(AES、RSA 等)?例如,我想使用命令openssl -engine cuda_engine genrsa -out rsa.key 1024
和 OpenSSL 来使用我的genrsa
CUDA 代码而不是原始代码。我不得不提到我想在 64 位的 Windows 7 SP1 上执行此操作。即使是虚拟解决方案也会有所帮助,因为我需要了解机制。
ios - 未加载适用于 iOS 的 Openssl 引擎
我们有一个项目需要在 iOS 设备上运行一个 openssl 引擎。我们已经为测试引擎编译了 .so 文件,它可以在命令行中正常工作。但是当我们把它放到iOS项目中并尝试加载引擎时,加载步骤总是报错。
myEngine
将远去NULL
。我怀疑 iOS 不允许这样的动态库。有没有人有经验如何使 OpenSSL 引擎在 iOS 上工作?
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
吗?
openssl - DSO 支持例程和多个 OpenSSL 加载错误
我想构建一个 OpenSSL RSA 引擎,从这个现有的源代码文件开始,这是英特尔实现的一种更快的方法。首先,我想构建这段代码,所以我使用这些命令:
...并且没有出现错误。然后,当我尝试使用以下命令测试引擎时:
...我收到以下错误:
在这一点上,我想我没有使用正确的标志,并且构建引擎的命令可能不完整。
我需要做什么才能完成这项工作?
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
并尝试相同的命令
apache - 配置 Apache 服务器以使用特定的 OpenSSL 引擎
我有一个可用的 OpenSSL RSA 引擎(即一个.so
文件)和一个配置为 SSL 模式的 Apache 服务器。
如何让 Apache 使用我的 RSA 引擎中的 RSA 实现?换句话说:我将引擎(.so
文件)放在哪里,如何修改openssl.cnf
文件以及如何构建 Apache?