OSS的公有云跟私有云分片上传大文件区别,报SignatureDoesNotMatch错误

<?xml version="1.0" encoding="UTF-8"?>
<Error>
  <Code>SignatureDoesNotMatch</Code>
  <Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>
  <RequestId>234234asdXxxsddd</RequestId>
  <HostId>oss-cn.XXXX.com</HostId>
  <OSSAccessKeyId>qwertyu</OSSAccessKeyId>
  <SignatureProvided>bbbbbxxxcccc=</SignatureProvided>
  <StringToSign>GET


Tue, 21 May 2024 02:55:36 GMT
/</StringToSign>
  <StringToSignBytes>47 45 54 0A 0A 0A 54 75 65 2C 20 32 31 20 4D 61 79 20 32 30 32 34 20 30 32 3A 35 35 3A 33 36 20 47 4D 54 0A 2F </StringToSignBytes>
</Error>

背景:

在做本地使用OSS官网提供分片上传文件的SDK时,报错签名不一致错误

排查步骤:
创建签名的方法:

OSSClient ossClient = new OSSClient(endPoint, accessKeyId, accessKeySecret);

1.验证创建签名的参数

endPoint:主要 私有云跟公有云的地址是不一样的,不要存疑,对 就是你看到的那个地址(可以 ping下你的地址,看能否访问通,是否要设置代理)

        // 创建ClientConfiguration。ClientConfiguration是OSSClient的配置类,可配置代理、连接超时、最大连接数等参数。走代理
//        ClientBuilderConfiguration conf = new ClientBuilderConfiguration();
//        conf.setProtocol(Protocol.HTTPS);
//
//        //设置代理
//        if (StringUtils.isNotBlank(proxyIp)) {
//            conf.setProxyHost(proxyIp);
//            conf.setProxyPort(proxyPort);
//        }

accessKeyId、accessKeySecret 就找个阿里官网的oss Brower、ossUtils工具或者其它登录工具验证下就好

2. 验证下sdk包的版本
<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>3.10.2</version>
</dependency>

这里从3.6.0 一直测试到了3.17.0 发现 好像其实都差不多。没啥区别,当然也是检查的必要步骤

3. 极其隐蔽且关键的致命一击
ClientBuilderConfiguration conf = new ClientBuilderConfiguration();
// 私有云要关闭CNAME
conf.setSupportCname(true);
OSSClient ossClient = new OSSClient(endPoint, accessKeyId, accessKeySecret,conf);
CNAME(Canonical Name)记录,也被称为别名记录,用于将一个域名映射到另一个域名。私有云环境中使用CNAME是为了指向云服务提供的特定资源或服务,比如CDN加速、视频直播等。在某些情况下,可能需要关闭或修改CNAME记录,具体取决于您的配置要求和安全策略。以下是一些可能需要考虑的情况:

确保数据安全:在私有云中,为了确保数据的安全性,有时需要避免数据通过公共互联网传输。这时,您可能会选择不使用CNAME记录,从而避免数据外泄风险。
避免冲突:如果您的私有云环境使用了内部DNS解析系统,那么外部的CNAME设置可能会与之发生冲突,因此需要关闭外部CNAME记录。
简化管理:在某些组织中,为了简化内部网络管理和减少维护成本,可能会选择关闭CNAME记录,并直接使用IP地址进行内部资源的访问。
此外,在一些场景下,如CDN加速、视频直播等,通常需要正确配置CNAME记录以指向云服务分配的地址,从而实现加速效果和服务的正常运作。因此,在这些情况下应保持CNAME记录的正确配置。

总的来说,是否需要关闭CNAME记录取决于具体的应用场景和您的网络安全及管理需求。
4.求救

实在解决不了的话,记住你是上帝,花了钱的上帝。提工单给阿里云官网就对了

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半生程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值