将ENGINE上下文附加到SSL_CTX

时间:2013-01-25 14:46:53

标签: ssl openssl openssl-engine

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

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

e.g。 EVP_CipherInit_ex的第三个参数为ENGINE*。以这种方式初始化EVP_CIPHER_CTX*的加密/解密将通过ENGINE实现处理加密/解密。

1 个答案:

答案 0 :(得分:1)

从我所看到和阅读的内容来看,你无法做到。如果您需要在代码中使用引擎,则有两种选择:

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

    ENGINE_set_default(engine,ENGINE_METHOD_ALL)

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

    ENGINE_set_default(engine,ENGINE_METHOD_RAND)

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

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

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