7

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

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

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

4

1 回答 1

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 对象,则需要手动维护该映射。

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

于 2015-11-17T01:43:21.673 回答