本指南提供了一些 pkcs11-tool
命令示例,以便您使用 PKCS #11 库在 Debian 11 (Bullseye) 上使用 Cloud HSM 密钥。文件中包含的命令
您可能需要根据操作系统或 Linux 发行版对这些说明进行更改。
准备工作
在继续之前,请先完成 将 Cloud HSM 密钥与 OpenSSL 搭配使用。
使用对称加密和解密
以下各部分介绍如何使用对称密钥进行加密和解密 OpenSSL 和 pkcs11-tool
前提条件
创建 Cloud HSM 原始对称加密密钥。如需创建 Cloud HSM 密钥,请在创建新密钥时将保护级别设置为 HSM。
记下您为密钥选择的原始对称加密算法。每种算法都有自己的 填充、初始化矢量和其他经过身份验证的数据。
创建包含要加密的数据的输入文件。
加密
如需加密文本文件,请运行以下命令:
pkcs11-tool --module PATH_TO_LIBKMSP11_SO --encrypt \
--mechanism MECHANISM \
--slot 0 \
--label HSM_KEY_NAME \
--iv INITIALIZATION_VECTOR \
--input-file INPUT_TEXT_FILE_PATH \
--output-file ENCRYPTED_TEXT_FILE_PATH
替换以下内容:
PATH_TO_LIBKMSP11_SO
:PKCS#11 的路径 模块,例如/usr/local/lib/libkmsp11.so
。MECHANISM
:要使用的机制(基于密钥算法),例如AES-CBC-PAD
。HSM_KEY_NAME
:Cloud HSM 密钥的名称 用于加密INITIALIZATION_VECTOR
:初始化的值 矢量数据。INPUT_TEXT_FILE_PATH
:所需输入文件的路径 进行加密。ENCRYPTED_TEXT_FILE_PATH
:您要保存加密文本文件的路径。
解密
如需解密文本文件,请运行以下命令:
pkcs11-tool --module PATH_TO_LIBKMSP11_SO --decrypt \
--mechanism MECHANISM \
--slot 0 \
--label HSM_KEY_NAME \
--iv INITIALIZATION_VECTOR \
--input-file ENCRYPTED_TEXT_FILE_PATH \
--output-file DECRYPTED_TEXT_FILE_PATH
替换以下内容:
PATH_TO_LIBKMSP11_SO
:PKCS#11 的路径 模块,例如/usr/local/lib/libkmsp11.so
。MECHANISM
:要使用的机制,基于键 算法,例如ECDSA
。HSM_KEY_NAME
:Cloud HSM 密钥的名称 。INITIALIZATION_VECTOR
:初始化的值 矢量数据。ENCRYPTED_TEXT_FILE_PATH
:所需文件的路径 解密。DECRYPTED_TEXT_FILE_PATH
:要保存的路径 解密后的文本文件。
使用非对称加密和解密
以下部分介绍了如何使用非对称加密密钥、OpenSSL 和 pkcs11-tool 进行加密和解密。
前提条件
加密
如需加密文本文件,请运行以下命令:
openssl pkeyutl -in INPUT_TEXT_FILE_PATH -encrypt -pubin \
-inkey PUBLIC_KEY \
-pkeyopt rsa_padding_mode:oaep \
-pkeyopt rsa_oaep_md:sha256 \
-pkeyopt rsa_mgf1_md:sha256 > ENCRYPTED_TEXT_FILE_PATH
替换以下内容:
INPUT_TEXT_FILE_PATH
:您要加密的输入文件的路径。PUBLIC_KEY
:公钥的路径。ENCRYPTED_TEXT_FILE_PATH
:要保存的路径 加密的文本文件。
解密
如需解密文本文件,请运行以下命令:
pkcs11-tool --module PATH_TO_LIBKMSP11_SO \
--decrypt --mechanism RSA-PKCS-OAEP --slot 0 --hash-algorithm=sha256 \
--mgf MGF1-SHA256 --label HSM_KEY_NAME --type privkey \
-i ENCRYPTED_TEXT_FILE_PATH \
-o OUTPUT_TEXT_FILE_PATH
替换以下内容:
PATH_TO_LIBKMSP11_SO
:PKCS#11 模块的路径(path/to/libkmsp11.so)。HSM_KEY_NAME
:Cloud HSM 密钥的名称 (对应于加密文本文件的公钥)。ENCRYPTED_TEXT_FILE_PATH
:您要解密的文件的路径。OUTPUT_TEXT_FILE_PATH
:要保存解密输出的路径。
签名并验证
以下部分介绍了如何使用非对称签名密钥和 pkcs11 工具进行签名和验证。
前提条件
创建 Cloud HSM 非对称签名密钥。
创建一个文件,其中包含您要签名的经过哈希处理的输入数据。
签名
如需为文本文件签名,请运行以下命令:
pkcs11-tool --module PATH_TO_LIBKMSP11_SO --sign \
--mechanism MECHANISM \
--slot 0 \
--label HSM_KEY_NAME \
-i INPUT_TEXT_FILE_PATH \
-o OUTPUT_SIGNATURE_FILE_PATH
替换以下内容:
PATH_TO_LIBKMSP11_SO
:PKCS#11 模块的路径,例如path/to/libkmsp11.so
。HSM_KEY_NAME
:Cloud HSM 密钥的名称 签名。MECHANISM
:要使用的机制,基于键 算法。例如ECDSA
。INPUT_TEXT_FILE_PATH
:您要签名的输入文件的路径。OUTPUT_SIGNATURE_FILE_PATH
:您要 保存签名文件。
验证
如需验证签名文件,请运行以下命令:
pkcs11-tool --module PATH_TO_LIBKMSP11_SO --verify \
--mechanism MECHANISM \
--slot 0 \
--label HSM_KEY_NAME \
-i INPUT_TEXT_FILE_PATH \
--signature-file SIGNATURE_FILE_PATH
替换以下内容:
PATH_TO_LIBKMSP11_SO
:PKCS#11 模块的路径,例如path/to/libkmsp11.so
。HSM_KEY_NAME
:用于生成要验证的签名的 Cloud HSM 密钥的名称。MECHANISM
:要使用的机制,基于密钥算法。例如ECDSA
。INPUT_TEXT_FILE_PATH
:之前存储的 之前已签过名。SIGNATURE_FILE_PATH
:签名文件的路径。