对数据进行签名和验证

数字签名用于确保数据的完整性和真实性。本文档介绍了如何使用 gdcloud CLI 通过密钥管理系统 (KMS) 管理的非对称密钥对数据进行签名和验证签名。

本页面面向应用运维人员群组(例如 DevOps 团队)中的受众群体,介绍如何在 Google Distributed Cloud (GDC) 网闸隔离配置中执行密钥管理操作。如需了解详情,请参阅适用于 GDC 网闸隔离配置文档的受众群体。

准备工作

如需使用密钥对数据进行签名和验证,请请求必要的权限,准备环境,并创建签名密钥(如果您还没有签名密钥)。

申请 IAM 角色

请联系您的 IAM 组织管理员,让其在您的项目命名空间中为您授予以下角色:

  • KMS Developer (kms-developer):查看密钥并在项目中执行加密操作,例如加密、解密、签名和验证数据。

准备环境

  1. 安装并初始化 gdcloud CLI(如果您尚未这样做)。

  2. 使用 gdcloud CLI 向 GDC 进行身份验证。此过程需要贵组织控制台的证书授权机构 (CA) 证书:

    1. 下载 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)
    2. 使用下载的 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。