首页 > 解决方案 > ECDSA 签名验证适用于 AWS KMS API,但不适用于使用 OpenSSL

问题描述

我正在尝试使用公钥和签名手动验证签名,但仍然失败。

当我尝试使用 AWS KMS API 时,它可以工作,

kms_boto3_client.verify(
    KeyId=keyid,
    Message=message,
    MessageType='RAW',
    Signature=signature,
    SigningAlgorithm='ECDSA_SHA_256'
)

请注意,上面以字节格式提供签名,并且消息是 base64 编码的,这是 AWS 要求

Message: SGVsbG8K

签名:

b'0D\x02 zlb\xf4\xd5\x99\xa2\xcd)/\x0b\xf4-\xbf8\xef5\xdf\x80Q\x10\x86\x8bQ1|Y\xac\xd2JZ\xca\x02 C\xaa\xa8&\xa4|R\xf8%\x12uA\x19\xdc\xfdd\x9f(8-\xe6WG\xe7\xd5\xc2\xb5/\x88\xd7\x18\xea'

但是当我尝试使用 openssl 时,

openssl dgst -sha256 -verify public.pem -signature signature message

我收到以下错误,

Error Verifying Data
4415708844:error:0DFFF0A8:asn1 encoding routines:CRYPTO_internal:wrong tag:/System/Volumes/Data/SWE/macOS/BuildRoots/e90674e518/Library/Caches/com.apple.xbs/Sources/libressl/libressl-56.60.2/libressl-2.8/crypto/asn1/tasn_dec.c:1144:
4415708844:error:0DFFF03A:asn1 encoding routines:CRYPTO_internal:nested asn1 error:/System/Volumes/Data/SWE/macOS/BuildRoots/e90674e518/Library/Caches/com.apple.xbs/Sources/libressl/libressl-56.60.2/libressl-2.8/crypto/asn1/tasn_dec.c:317:Type=ECDSA_SIG

我不明白我做错了什么?

标签: amazon-web-servicesopenssl

解决方案


推荐阅读