将ENGINE上下文附加到SSL_CTX

use*_*164 6 ssl openssl openssl-engine

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

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

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

Ole*_*ryb 2

从我所看到和读到的来看,你不能。如果您需要在代码中使用引擎,您有两种选择:

  1. 将您的引擎设置为默认引擎,OpenSSL 将使用该引擎提供的所有这些方法,对于所有其他方法 - 将使用 OpenSSL 内置方法。这是在这种情况下您需要使用的调用:

    ENGINE_set_default(引擎,ENGINE_METHOD_ALL)

  2. 为一些选定的方法设置引擎,例如下面的代码将仅针对 RAND 方法进行设置:

    ENGINE_set_default(引擎,ENGINE_METHOD_RAND)

您可以在这里找到更多示例: https: //www.openssl.org/docs/manmaster/crypto/engine.html和 openssl 的 README.ENGINE。

换句话说,引擎是一个全局设置,如果您想将其映射到 SSL_CTX 对象,则需要手动维护该映射。

顺便说一句,我很高兴被证明是错误的,因为我自己需要这种功能,并希望它将来能够实现。