数字签名用于确保数据的完整性和真实性。本文档介绍了如何使用 gdcloud CLI 通过由密钥管理系统 (KMS) 管理的非对称密钥来对数据进行签名和验证签名。
本页面向应用运维人员群组(例如 DevOps 团队),介绍如何在 Google Distributed Cloud (GDC) 气隙环境中执行密钥管理操作。如需了解详情,请参阅 GDC 网闸隔离配置文档的受众群体。
准备工作
如需使用密钥对数据进行签名和验证,请请求必要的权限、准备环境,并创建签名密钥(如果您还没有签名密钥)。
申请 IAM 角色
请与您的组织 IAM 管理员联系,以便在您的项目命名空间中为您授予以下角色:
- KMS Developer (
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。