最近更新时间:2022-12-30 15:47:55
KS3签名工具可用于生成请求签名。您可以在工具页面上填入指定的参数,生成请求签名,以及校验请求签名的正确性,与您计算出的签名作对比,快速定位错误。KS3签名工具为您提供V2和V4两种签名计算方式。
https://ks3tools.ks3-cn-beijing.ksyuncs.com/tools/sign/index.html#/sign2Http
https://ks3tools.ks3-cn-beijing.ksyuncs.com/tools/sign/index.html#/policyV2
https://docs.ksyun.com/documents/2321
https://ks3tools.ks3-cn-beijing.ksyuncs.com/tools/sign/index.html#/sign4Http
https://ks3tools.ks3-cn-beijing.ksyuncs.com/tools/sign/index.html#/policyV4
https://docs.ksyun.com/documents/6890
在 “密钥信息” 栏中,填写您的密钥信息。如下图所示:
密钥中的信息均为必填项,填写时请确保该信息无误,填写错误将导致您的签名被视为无效签名。API密钥的参数信息获取可参考https://docs.ksyun.com/documents/883
。
主要参数如下表所示:
参数名称 | 是否必填 | 描述 |
---|---|---|
HTTP-Verb | 是 | HTTP 请求方法,包括 GET,POST,PUT,DELETE,OPTIONS,HEAD |
Date | 否 | 请求发起的时间,日期格式:Wed, 11 May 2022 06:25:19 GMT |
资源路径 | 是 | 路径以 /bucketName 开头,如:/bucketName 、 /bucketName/b |
SubResource | 否 | 例如:“acl”,“lifecycle”按照字典从小到大排列,以&为分隔符排列 |
Endpoint | 否 | 请求访问的域名,若需生成对应请求,Endpoint则为必填,如:ks3-cn-beijing.ksyuncs.com |
相关 HTTP 请求参数的详细描述,请参见文档末尾的参数名称详解表。
单击生成签名,即可在右侧查看请求签名结果。如下图所示:
KS3签名工具将分别展示生成的最终签名及计算签名过程中的过程参数。相关过程参数的详细介绍,请参见签名文档:https://docs.ksyun.com/documents/2321
。
KS3签名工具同时提供生成发送请求curl命令,可通过复制直接使用终端进行请求:
主要参数如下表所示:
参数名称 | 是否必填 | 描述 |
---|---|---|
SecretAccessKey | 是 | 用于验证用户的密钥 |
当前时间戳 | 是 | 请求发起的时间,填写自UTC时间1970年01月01号开始的秒数 |
超时时间 | 否 | 超过该时间请求失败,单位为秒 |
Conditions | 是 | Policy文档中对上传内容的验证条件。您在表单中指定的每个表单字段(KSSAccessKeyId、Signature、file、policy除外)以及bucket必须包含在条件列表中。详情请参见Post Policy文档 |
单击显示Policy文档生成V2签名结果,如下图所示:
Expiration:采用 ISO 8601 UTC 日期格式来指定策略的过期日期,即只能在指定时间之前进行上传,在这个时间之后的上传都将被认为是非法的,KS3将返回403。
如需生成对应curl命令发送请求,请填写表单参数 AccessKey、file、Endpoint:
在 “密钥信息” 栏中,填写您的密钥信息。如下图所示:
密钥中的信息均为必填项,填写时请确保该信息无误,填写错误将导致您的签名被视为无效签名。API密钥的参数信息获取可参考https://docs.ksyun.com/documents/883
。
主要参数如下表所示:
参数名称 | 是否必填 | 描述 |
---|---|---|
HTTPMethod | 是 | HTTP 请求方法,包括 GET,POST,PUT,DELETE,OPTIONS,HEAD |
Date | 否 | 请求发起的时间,若未填写此项需在Headers中填写x-kss-date,日期格式与此项相同,日期格式:20221108T021948Z |
资源路径 | 是 | 路径以 /bucketName 开头,如:/bucketName 、 /bucketName/b |
SubResource | 否 | 例如:“acl”,“lifecycle”按照字典从小到大排列,以&为分隔符排列 |
Endpoint | 是 | 请求访问的域名,如:ks3-cn-beijing.ksyuncs.com |
相关 HTTP 请求参数的详细描述,请参见文档末尾的参数名称详解表。
V4签名的x-kss-content-sha256表单项支持两种取值,默认为固定值UNSIGNED-PAYLOAD,表示忽略请求正文的哈希校验。
若选择自定义,x-kss-content-sha256的值为请求体经过哈希处理的以小写十六进制字符串表示形式,用以对请求体进行校验,若KS3计算出请求体的哈希值与x-kss-content-sha256请求头的值不同,则会返回错误信息。自定义x-kss-content-sha256有以下两种形式:
在此处填写请求体的字符串内容后,生成签名时签名工具会计算出此处字符串的x-kss-content-sha256值,同时将该字符串添加到生成的curl中。
在此处选择文件后,签名工具会计算出该文件的x-kss-content-sha256值,同时也会计算出文件的Content-MD5值并自动填写到Headers表单项中,文件越大计算所需要的时间越长。注意,此处选择的文件并不会被添加到生成的curl中,请求时需要在请求体添加该文件。
单击生成签名,即可在右侧查看请求签名结果。如下图所示:
KS3签名工具将分别展示生成的最终签名及计算签名过程中的过程参数。相关过程参数的详细介绍,请参见签名文档:https://docs.ksyun.com/documents/6890
。
KS3签名工具同时提供生成发送请求curl命令,可通过复制直接使用终端进行请求:
主要参数如下表所示:
参数名称 | 是否必填 | 描述 |
---|---|---|
AccessKey | 是 | 用于标识用户 |
SecretAccessKey | 是 | 用于验证用户的密钥 |
当前时间戳 | 是 | 请求发起的时间,填写自UTC时间1970年01月01号开始的秒数 |
超时时间 | 否 | 超过该时间请求失败,单位为秒 |
Endpoint | 是 | 访问域名 |
Conditions | 是 | Policy文档中对上传内容的验证条件。您在表单中指定的每个表单字段(KSSAccessKeyId、Signature、file、policy除外)以及bucket必须包含在条件列表中。详情请参见Post Policy文档 |
单击显示Policy文档生成V4签名Policy必填表单项、Policy文档及签名:
Expiration:采用 ISO 8601 UTC 日期格式来指定策略的过期日期,即只能在指定时间之前进行上传,在这个时间之后的上传都将被认为是非法的,KS3将返回403。
V4签名存在特殊必填表单项,KS3签名工具自动为您计算并添加,详细描述请参见文档末尾特殊表单项表。
file为待上传文件的本地绝对路径
可直接复制请求,使用终端发送
参数名称 | 描述 | 示例 |
---|---|---|
资源路径 | bucketname + key | bucket/ddd/xxx |
SubResource | “acl”,“lifecycle”,“location”,“logging”,“partNumber”,“policy”,“uploadId”,“uploads”,“cors”, “restore”, "tagging, “crr”, “mirror”,“response-content-type”,“response-content-language”,“response-expires”,“response-cache-control”,“response-content-disposition”,“response-content-encoding” 按照字典序,从小到大排列,以&为分隔符排列,即可得到SubResource | acl partNumber=xxx partNumber={PartNumber}&uploadId={UploadId} |
CanonicalizedKssHeaders | 所有以x-kss-开头的请求头 | x-kss-copy-source:/xxx-test/57M.pdf&x-kss-metadata-directive:COPY&x-kss-storage-class:STANDARD_IA |
HttpParameters | URI的绝对路径,以域名后面的“?”开头,除SubResource内包含的值外,直到字符串的末尾截止 | max-keys=xxxxxx&prefix=abc |
file | 本地文件的绝对路径 | /Users/xxxx/Desktop/fileName |
Headers | 除"Content-TYPE" , “Content-Length”, “x-kss-content-sha256”, “Authorization” 外的所有请求头 | x-kss-storage-class: STANDARD&Range:bytes=0-4 |
x-kss-content-sha256 | 有效值:HexEncode(Sha256Hash(RequestPayload)) UNSIGNED-PAYLOAD STREAMING-AWS4-HMAC-SHA256-PAYLOAD HexEncode(Sha256Hash(RequestPayload)):请求体经过哈希处理的以小写十六进制字符串表示形式 UNSIGNED-PAYLOAD:忽略请求正文的哈希校验 STREAMING-AWS4-HMAC-SHA256-PAYLOAD:chunk传输校验,暂不支持 |
x-kss-content-sha256:UNSIGNED-PAYLOAD |
V4签名计算时所有请求头必须参与计算,且V4请求必传"x-kss-content-sha256"、“Host”、“x-kss-date”请求头,KS3签名工具自动为您添加并参与计算。
V4表单中包含签名需特殊表单项,且必须为确切匹配。生成policy文档时,KS3签名工具已自动为您添加以下特殊表单项:
特殊表单项 | 描述 |
---|---|
x-kss-algorithm | 签名算法: KSS4-HMAC-SHA256 |
x-kss-credential | 签名范围:格式为<your-access-key-id>/<date>/<KS3-region>/<KS3>/kss4_request |
x-kss-date | 请求时间:时间格式为 yyyyMMddTHHmmssZ (X-Kss-Date<=now+15m) 请求的时间戳不能大于(服务器时间戳+15m) |
匹配规则 | 描述 |
---|---|
确切匹配 | 指定acl必须等于public-read。[“acl”: “public-read”]或者[“eq”, “$acl”, “public-read”] |
Starts with | 指定key必须以2015/01/开头。[“starts-with”, “$key”, “2015/01/”] |
通配 | 指定success_action_redirect可以是任意值(注意:success_action_status不支持通配)。[“starts-with”, “$success_action_redirect”, “”] |
指定Content-Length范围 | 指定上传内容(不止是文件,还有其他表单项)Content-Length的范围为1048579-10485760。[“content-length-range”, 1048579, 10485760] |
KS3同时支持KS3 V2/V4和AWS V2/V4签名,通过签名工具右上角的签名方式选择框,可以切换KS3签名和AWS签名,默认为KS3签名。
当通过HTTP请求头发送签名时,如果选择KS3签名,Authorization的值以KSS开头,并将x-kss开头的请求头加入签名计算;如果选择AWS签名,Authorization的值以AWS开头,并将x-amz开头的请求头加入签名计算。
当通过URL请求参数发送签名时,如果选择KS3签名,参数为KSSAccessKeyId;如果选择AWS签名,参数为AWSAccessKeyId。
如果选择KS3签名,签名算法为KSS4-HMAC-SHA256;如果选择AWS签名,签名算法为AWS4-HMAC-SHA256。两种签名方式对比如下:
项目 | AWS签名 | KS3签名 |
---|---|---|
请求头前缀 | x-amz- | x-kss- |
queryString前缀 | X-Amz- | X-Kss- |
协议 | AWS4 | KSS4 |
服务名称 | s3 | ks3 |
固定值 | aws4_request | kss4_request |
纯净模式