数字签名用于确保数据的完整性和真实性。本文档介绍了如何使用 gdcloud CLI 通过密钥管理系统 (KMS) 管理的非对称密钥对数据进行签名和验证签名。
本页面面向应用运营人员组内的受众,例如 DevOps 团队,在 Google Distributed Cloud (GDC) 气隙环境中执行密钥管理操作时。如需了解详情,请参阅 GDC 气隙环境文档的受众。
准备工作
如需使用密钥对数据进行签名和验证,请请求必要的权限,准备环境,并创建签名密钥(如果您还没有签名密钥)。
请求 IAM 角色
请与组织 IAM 管理员联系,以便在您的项目命名空间中向您授予以下角色:
- KMS 开发者 (
kms-developer):查看密钥,并在项目中执行加密、解密、签名和验证数据等加密操作。
准备环境
安装并初始化 gdcloud CLI(如果尚未这样做 )。
使用 gdcloud CLI 向 GDC 进行身份验证。此过程需要您组织的控制台的证书授权机构 (CA) 证书:
下载 CA 证书:
echo -n | openssl s_client -showcerts -connect CONSOLE_URL:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > CA_CERT_PATH替换以下内容:
CONSOLE_URL:您组织的控制台网址(例如console.org-1.zone1.google.gdch.test)CA_CERT_PATH:您要将 CA 证书文件保存到的完整路径(例如/tmp/my-org-ca.crt)
使用下载的 CA 证书登录:
gdcloud auth login --login-config-cert=CA_CERT_PATH
确保存在签名密钥
如需对数据进行签名和验证,您必须使用签名密钥。密钥创建和验证需要单独的 IAM 权限,如链接页面中所述。
对数据进行签名
如需对数据进行签名,请使用 gdcloud kms keys asymmetric-sign 命令。此命令使用签名密钥创建输入文件的数字签名,并保存 base64 编码的签名:
gdcloud kms keys asymmetric-sign \
namespaces/NAMESPACE/signingKeys/KEY_NAME \
--input-file=INPUT_PATH \
--signature-file=SIGNATURE_FILE
替换以下内容:
- NAMESPACE:项目命名空间,例如:
kms-test1 - KEY_NAME:用于签名的密钥的名称,例如:
key-1 - INPUT_PATH:您要签名的输入文件的路径
- SIGNATURE_FILE:用于保存 base64 编码的签名的输出文件的路径
运行该命令后,您会看到在 --signature-file 标志中指定的输出文件,其中包含 base64 编码的签名。
验证数据
对数据进行签名后,请使用 gdcloud kms keys asymmetric-verify 命令验证 base64 数字签名。此命令会验证在运行 gdcloud kms keys asymmetric-sign 命令后收到的 base64 编码的数字签名是否有效:
gdcloud kms keys asymmetric-verify \
namespaces/NAMESPACE/signingKeys/KEY_NAME \
--input-file=INPUT_PATH \
--signature-file=SIGNATURE_FILE
替换以下内容:
- NAMESPACE:项目命名空间,例如:
kms-test1 - KEY_NAME:用于签名的密钥的名称,例如:
key-1 - INPUT_PATH:已签名的原始输入文件的路径
- SIGNATURE_FILE:包含 要验证的 base64 编码的签名的文件的路径
运行该命令后,如果成功,您会看到输出 Verification OK。如果不成功,您会看到失败输出 Verification Failure。