我想知道是否有可能将ENGINE*
实施附加到SSL_CTX*
和/或SSL*
结构。我想要实现的是使用OpenSSL中内置的默认加密操作设置SSL_CTX*
,使用专用HSM作为加密层设置另一个SSL_CTX*
。
我可以通过这种方式实现这一目标吗?从我读过的内容可以注册并设置为默认一些加密操作(随机,密码,md等等),但已经设置的那些将被使用而不是内置的。
e.g。 EVP_CipherInit_ex
的第三个参数为ENGINE*
。以这种方式初始化EVP_CIPHER_CTX*
的加密/解密将通过ENGINE实现处理加密/解密。
答案 0 :(得分:1)
从我所看到和阅读的内容来看,你无法做到。如果您需要在代码中使用引擎,则有两种选择:
将引擎设置为默认值,OpenSSL将为引擎提供的所有方法使用引擎,对于所有其他方法 - 将使用OpenSSL内置方法。这是您在这种情况下需要使用的调用:
ENGINE_set_default(engine,ENGINE_METHOD_ALL)
根据一些选定的方法设置您的引擎,例如下面的代码将仅针对RAND方法进行设置:
ENGINE_set_default(engine,ENGINE_METHOD_RAND)
您可以在此处找到更多示例:https://www.openssl.org/docs/manmaster/crypto/engine.html和openssl的README.ENGINE。
换句话说,引擎是全局设置,如果要将其映射到SSL_CTX对象,则需要手动维护该映射。
顺便说一下,我很高兴被证明是错的,因为我自己需要这种功能,希望将来能够实现。