对数据进行签名和验证

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

本页面面向应用运营人员组内的受众,例如 DevOps 团队,在 Google Distributed Cloud (GDC) 气隙环境中执行密钥管理操作时。如需了解详情,请参阅 GDC 气隙环境文档的受众

准备工作

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

请求 IAM 角色

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

  • KMS 开发者 (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