本文为您介绍如何使用OpenSSL动态引擎。您也可以在应用程序中通过OpenSSL程序化接口使用动态引擎。
前提条件
密码机实例处于初始化状态并且已创建一个加密用户(CU)。具体操作,请参见快速入门。
已启动HSM客户端(hsm_proxy)。具体操作,请参见启动HSM客户端(hsm_proxy)。
在您开始使用OpenSSL动态引擎之前,请确保OpenSSL支持动态引擎加载。
您可以使用以下命令来验证它是否支持:
openssl engine -c
如果OpenSSL支持动态引擎加载,你将得到一个类似于以下的响应:
"(dynamic) Dynamic engine loading support"
RSA加密和解密程序
运行以下命令来导出环境变量。用CU用户的用户名替换
HSMusername
,用相应的密码替换password
。export LD_LIBRARY_PATH=/opt/hsm/lib/:$LD_LIBRARY_PATH
export n3fips_password=<HSMusername>:<password>
运行以下命令来打开交互式模式:
openssl
运行以下命令来加载动态引擎:
engine -t dynamic -pre SO_PATH:/opt/hsm/lib/libhsm_openssl.so -pre ID:hsm_openssl -pre LIST_ADD:1 -pre LOAD
如果命令运行成功,会有以下响应:
Loaded: (hsm_openssl) Cavium hardware engine support
运行以下命令来生成非对称密钥:
genrsa -engine hsm_openssl
如果命令运行成功,动态OpenSSL引擎有一种将密钥句柄编码为一种仿制PEM格式的方法。你可以将内容存储在一个文件路径中,例如
/root/openssl/priv.key
。-----BEGIN RSA PRIVATE KEY----- ****IQIBAAKCAQEAp2R756S3q1/Aa0htOSXovkakVI3ePqkMY4I/AM7j6ZO4lf1b l58v0zUqk8c9Eknf8VclGrMz8vqEOMWWXUM6xc4Jq6HRhBbp/SdqTlSW+6WjYcG3 nMP5PxBIuWLazjS7Mte3n3NSK+qS2jIeUdhr+OPhCdeQfxsDbc9CTz97NNDnoARR 64nZ/mMTBHXW5dkbgOmTE3plCqB0NctTwXgF3C6z+6/vASJEdXseFV7GS5vATNf4 i7uEkIIx0791Ped0+3yoBZ31XuAQKcspEab+z3cRdvjUb0YluYF00WDu3D/5bBYW 0epo6l1r83EhqeAhOviUqQLwMJoLeUxif8RpNQIDAQABAoIBAQDq/Pzu6vz87h8A AAAAAAAA6vz87ur8/O7q/Pzu6vz87ur8/O7q/Pzu6vz87ur8/O7q/Pzu6vz87ur8 /O7q/Pzu6vz87ur8/O7q/Pzu6vz87ur8/O7q/Pzu6vz87ur8/O7q/Pzu6vz87ur8 /O7q/Pzu6vz87ur8/O7q/Pzu6vz87ur8/O7q/Pzu6vz87ur8/O7q/Pzu6vz87ur8 /O7q/Pzu6vz87ur8/O7q/Pzu6vz87ur8/O7q/Pzu6vz87ur8/O7q/Pzu6vz87ur8 /O7q/Pzu6vz87ur8/O7q/Pzu6vz87ur8/O7q/Pzu6vz87ur8/O7q/Pzu6vz87ur8 /O7q/PzuAgEAAgEAAgEAAgEA**** -----END RSA PRIVATE KEY-----
运行以下命令来导出公钥:
rsa -in /root/openssl/priv.key -pubout -out /root/openssl/pub.pem
运行以下命令来加密一个文件
helloworld.txt
:重要这一操作必须在非交互式模式下进行。在这个例子中,文件的内容是hello world!
openssl rsautl -encrypt -inkey /root/openssl/pub.pem -pubin -in /root/openssl/helloworld.txt -out /root/openssl/helloworld.txt.enc
运行以下命令来解密一个文件
helloworld.txt.enc
:重要这一操作必须在互动模式下进行,而且必须已经加载了动态引擎。
openssl rsautl -decrypt -inkey /root/openssl/priv.key -in /root/openssl/helloworld.txt.enc -out /root/openssl/helloworld.txt.dec
文档内容是否对您有帮助?