本文為您介紹如何使用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
文檔內容是否對您有幫助?