加载OpenSSL引擎后,如何使用OpenSSL命令行进行操作(例如签名)



我在ubuntu 20.4中编写了一个自定义的OpenSSL引擎和引擎测试程序。OpenSSL的版本是1.1.1。

目标是在TLS会话中使用引擎,第一步是使用命令行对摘要进行签名。参考网站为:https://wiki.openssl.org/index.php/Creating_an_OpenSSL_Engine_to_use_indigenous_ECDH_ECDSA_and_HASH_Algorithms

但是测试人员通过调用函数来使用引擎,比如代码中的ECDSA_sign和ECDSA_verify,这些函数不能按预期运行。我希望能达到这样的效果:

$openssl dgst-引擎<engine_id&gt-sha256-注销

那么我该怎么办呢?这可行吗?非常感谢!

该OpenSSL wiki页面对初学者了解OpenSSL引擎的工作原理很有用,但由于太旧,该页面中的许多API都已被弃用,尤其是ECC函数。

是的,这是可行的。

YOUR_ENGINE_NAME.so复制到/usr/lib/x86_64-linux-gnu/engines-1.1/,然后编辑/etc/openssl.cnf以告诉OpenSSL命令行实用程序从加载引擎开始:

# Insert near top of file openssl.cnf:
openssl_conf = openssl_init
# OpenSSL example configuration file.
# This is mostly being used for generation of certificate requests.
#
......
......
# Insert at bottom of file openssl.cnf:
[ openssl_init ]
engines = engine_section
[ engine_section ]
YOUR_ENGINE_NAME = YOUR_ENGINE_NAME_section
[ YOUR_ENGINE_NAME_section ]
engine_id = YOUR_ENGINE_NAME
dynamic_path = /usr/lib/x86_64-linux-gnu/engines-1.1/YOUR_ENGINE_NAME.so
default_algorithms = ALL
init = 1

您可以在引擎的init函数中放入一些printf信息。如果引擎正确加载,它将在OpenSSL命令行实用程序启动后显示:

$ openssl
engine bind start
YOUR_ENGINE init success
OpenSSL> 

最新更新