调用CertificatePublicKeyVerify接口使用指定证书验证数字签名。

请求参数中签名算法需要跟密钥类型对应。签名算法和密钥类型对照表如下:

Algorithm

Key Spec

RSA_PKCS1_SHA_256

RSA_2048

RSA_PSS_SHA_256

RSA_2048

ECDSA_SHA_256

EC_P256

SM2DSA

EC_SM2

本文将提供一个示例,使用ID为12345678-1234-1234-1234-12345678****的证书,通过ECDSA_SHA_256签名算法验证原始数据签名VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4=的数字签名值是否为ZOyIygCyaOW6Gj****MlNKiuyjfzw=

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

请求参数

名称 类型 是否必选 示例值 描述
Action String CertificatePublicKeyVerify

要执行的操作。取值:CertificatePublicKeyVerify

CertificateId String 12345678-1234-1234-1234-12345678****

证书ID。证书管家中证书的全局唯一标识符。

Algorithm String ECDSA_SHA_256

签名算法。取值:

  • RSA_PKCS1_SHA_256
  • RSA_PSS_SHA_256
  • ECDSA_SHA_256
  • SM2DSA
    说明 SM2DSA签名算法仅在中国内地使用托管密码机的地域支持。更多信息,请参见托管密码机概述
Message String VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4=

原始签名数据。

使用Base64编码。例如:原始签名数据的十六进制内容为[0x31, 0x32, 0x33, 0x34],则对应的Base64编码为MTIzNA==

当MessageType取值为RAW时,数据内容需小于4KB。

如果待签名数据内容大于4KB,您可以将MessageType指定为DIGEST,将Message指定为本地计算的消息摘要(又称哈希值)。证书管家将使用您自己的证书应用系统计算消息摘要,使用的消息摘要算法须与指定签名算法需要的消息摘要算法保持一致。具体如下:

  • RSA_PKCS1_SHA_256、RSA_PSS_SHA_256和ECDSA_SHA_256对应的消息摘要算法为SHA-256。
  • SM2DSA对应的消息摘要算法为SM3。
说明 当证书密钥规格为EC_SM2,并且MessageType为DIGEST时,Message值为GB/T 32918.2-2016 6.1中描述的e
MessageType String RAW

消息类型。取值:

  • RAW(默认值):原始数据。
  • DIGEST:原始数据的消息摘要(哈希值)。
SignatureValue String ZOyIygCyaOW6Gj****MlNKiuyjfzw=

签名值。

使用Base64编码。

关于公共请求参数的详情,请参见公共参数

返回数据

名称 类型 示例值 描述
RequestId String 5979d897-d69f-4fc9-87dd-f3bb73c40b80

本次调用请求的ID,是由阿里云为该请求生成的唯一标识符,可用于排查和定位问题。

CertificateId String 12345678-1234-1234-1234-12345678****

证书ID。

SignatureValid Boolean true

验证结果。取值:

  • true:验证成功。
  • false:验证失败。

示例

请求示例

http(s)://[Endpoint]/?Action=CertificatePublicKeyVerify
&CertificateId=12345678-1234-1234-1234-12345678****
&Algorithm=ECDSA_SHA_256
&Message=VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4=
&MessageType=RAW
&SignatureValue=ZOyIygCyaOW6Gj****MlNKiuyjfzw=
&公共请求参数

正常返回示例

XML格式

HTTP/1.1 200 OK
Content-Type:application/xml

<CertificatePublicKeyVerifyResponse>
    <RequestId>5979d897-d69f-4fc9-87dd-f3bb73c40b80</RequestId>
    <CertificateId>12345678-1234-1234-1234-12345678****</CertificateId>
    <SignatureValid>true</SignatureValid>
</CertificatePublicKeyVerifyResponse>

JSON格式

HTTP/1.1 200 OK
Content-Type:application/json

{
  "RequestId" : "5979d897-d69f-4fc9-87dd-f3bb73c40b80",
  "CertificateId" : "12345678-1234-1234-1234-12345678****",
  "SignatureValid" : true
}

错误码

HttpCode 错误码 错误信息 描述
400 InvalidParameter The specified parameter is not valid. 参数非法。
404 InvalidAccessKeyId.NotFound The specified AccessKey ID does not exist. AccessKey ID不存在。

访问错误中心查看更多错误码。