开发者社区 > 域名解析DNS > 云解析DNS > 正文

Specified signature does not match our calculation

使用的阿里云sdk
添加dns解析时报错
代码如下
image.png
image.png
报错日志如下
image.png
服务器时钟检查无误
服务器系统编码如下
image.png

展开
收起
游客yor3p75va7rxq 2023-10-13 15:25:29 754 0
3 条回答
写回答
取消 提交回答
    1. 确保您已经正确安装了阿里云SDK。您可以在阿里云官方文档中查看安装指南:https://help.aliyun.com/document_detail/2355674.html?spm=a2c4g.29772.0.i1

    2. 检查您的代码,确保您在调用DNS解析API时提供了正确的参数。例如,域名、记录类型(A、AAAA、CNAME等)、TTL值等。

    3. 确保您的服务器网络连接正常。您可以尝试ping一下阿里云的DNS服务器(如223.5.5.5或223.6.6.6),看是否能通。

    2023-10-14 08:55:01
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    看起来您在使用阿里云SDK时遇到了签名验证失败的问题。这个问题通常是由于签名算法或者签名的字符串不匹配导致的。
    首先,您需要确保您在生成签名时使用的是正确的签名算法。阿里云SDK默认使用的是HMAC-SHA1算法,但是您也可以选择使用其他的算法,例如HMAC-SHA256。您需要在SDK中设置正确的签名算法。
    其次,您需要确保签名的字符串是正确的。签名字符串应该包括您需要访问的资源的URL、HTTP方法、请求头、请求体等信息。您需要在SDK中正确地构造签名字符串。
    最后,您需要确保您的签名是正确的。签名是通过将签名字符串和您的密钥进行哈希计算得到的。您需要在SDK中正确地生成签名。

    2023-10-13 21:30:41
    赞同 展开评论 打赏
  • 根据您提供的信息,这个问题可能是由于您在添加DNS解析时使用了错误的签名计算方法导致的。为了解决这个问题,请按照以下步骤操作:

    1. 确保您使用的阿里云SDK版本是最新的。如果不是,请升级到最新版本。

    2. 检查您的代码中是否正确计算了签名。您可以使用阿里云官方提供的计算方法进行验证。以下是一个简单的Python示例,用于计算签名:

    import hmac
    import hashlib
    import base64
    import time
    import urllib.parse
    
    def calculate_signature(access_key_secret, method, query_parameters):
        sorted_query_parameters = sorted(query_parameters.items(), key=lambda x: x[0])
        query_string = '&'.join(['{}={}'.format(k, v) for k, v in sorted_query_parameters])
        string_to_sign = 'GET&%2F&' + urllib.parse.quote(query_string, safe='')
        timestamp = int(time.time())
        date = str(timestamp)
        region = 'cn-hangzhou'
    
        sign_str = '{}\n{}\n{}\n{}'.format(date, region, method, string_to_sign)
        signature = base64.b64encode(hmac.new(bytes(access_key_secret + '&', encoding='utf-8'), bytes(sign_str, encoding='utf-8'), digestmod=hashlib.sha256).digest()).decode()
        return signature
    
    1. 使用上述函数计算签名,并将其添加到您的请求参数中。例如:
    access_key_id = 'your_access_key_id'
    access_key_secret = 'your_access_key_secret'
    method = 'GET'
    query_parameters = {'Action': 'DescribeInstances', 'Version': '2014-05-26'}
    
    signature = calculate_signature(access_key_secret, method, query_parameters)
    query_parameters['Signature'] = signature
    
    1. 将修改后的代码和参数重新运行,看看问题是否解决。

    如果问题仍然存在,建议您检查阿里云官方文档以获取更多关于SDK使用的信息,或者联系阿里云技术支持寻求帮助。

    2023-10-13 21:22:25
    赞同 展开评论 打赏

阿里云云解析DNS产品相关资讯

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载