使用脚本在Openssl中加载引擎并使用它来签署文件

时间:2016-10-13 11:45:49

标签: bash openssl

我想使用智能卡上的私钥来签名文件。 使用这些命令:

openssl
engine -t dynamic -pre SO_PATH:/usr/lib/engines/engine_pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:/usr/lib/opensc-pkcs11.so
dgst -engine pkcs11 -sign slot_0-id_1 -keyform engine -sha256 -out signature.bin textToSign.txt
quit

它在终端中完美运行。 我想写一个使用这些命令签署文件的小脚本。 它看起来像这样:

#/bin/bash
openssl engine -t dynamic -pre SO_PATH:/usr/lib/engines/engine_pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:/usr/lib/opensc-pkcs11.so
openssl dgst -engine pkcs11 -sign slot_0-id_1 -keyform engine -sha256 -out signature.bin textToSign.txt

问题是,引擎不存在于dgst - 命令中使用。 是否可以在脚本中启动openssl-session并执行这两个命令?

1 个答案:

答案 0 :(得分:2)

您可以在脚本中使用“here document”bash功能<<

#/bin/bash
openssl << EOT
engine -t dynamic -pre SO_PATH:/usr/lib/engines/engine_pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:/usr/lib/opensc-pkcs11.so
dgst -engine pkcs11 -sign slot_0-id_1 -keyform engine -sha256 -out signature.bin textToSign.txt
quit
EOT