将一个ENGINE上下文附加到一个SSL_CTX

7

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

是否有一种方法可以实现这一点?根据我所了解的,人们可以注册和设置一些加密操作(随机数、密码、md等等...),但已经设置的将被使用而不是内置的操作。

例如,EVP_CipherInit_ex 的第三个参数是一个 ENGINE*。以这种方式初始化的 EVP_CIPHER_CTX* 进行加密/解密将通过 ENGINE 实现进行处理。


我有类似的需求,这个帖子太旧了,有没有进展? - Vagish
1个回答

2
据我所见和阅读的内容,您无法这样做。如果您需要在代码中使用引擎,则有两个选项:
  1. 将您的引擎设置为默认引擎,OpenSSL 将使用引擎提供的所有方法,对于所有其他方法,将使用 OpenSSL 内置方法。在这种情况下,您需要使用以下调用:
  2. ENGINE_set_default(engine, ENGINE_METHOD_ALL)

  3. 为一些选择的方法设置您的引擎,例如下面的代码将仅为 RAND 方法设置它:
  4. ENGINE_set_default(engine, ENGINE_METHOD_RAND)

您可以在此处找到更多示例:https://www.openssl.org/docs/manmaster/crypto/engine.html 和 OpenSSL 的 README.ENGINE。
换句话说,引擎是全局设置,如果您想将其映射到 SSL_CTX 对象,则需要手动维护该映射。
顺便说一句,我很乐意被证明是错误的,因为我自己需要这种功能,并希望它将来能够实现。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接