Amazon S3에 대해 사전 서명 된 URL을 만들려고합니다.미리 지정된 URL에 대해 S3 서명이 일치하지 않습니다.
아래 코드는 S3 문서의 예제에서 서명과 동일한 서명을 생성합니다. 난 내 자신의 자격 증명 등을 연결하면 (https://s3.amazonaws.com/doc/s3-developer-guide/RESTAuthentication.html)
그러나은 내가 AWS에서 오류가 발생합니다 : 는 "우리가 계산 요청 서명을 제공 한 서명과 일치하지 않는 키와 서명 방법을 확인합니다.."
아래의 코드가 작동하는 것 같으면 내 서명 방법이 괜찮다고 생각합니다. 또한 사용 된 자격 증명은 파일을 업로드하는 데 사용되는 이므로 좋은 결과이기도합니다. 그것들은 IAM 사용자가 아닌 루트 인증서입니다.
나는 시도했다 :
1)와 마침표가없는 파일 이름입니다. 2) 미국뿐만 아니라 아일랜드에있는 파일. 3) HTTP 및 HTTPS 4) SHA256 (문서에서 예를 벗어나지 만) 5) 다른 웹 클라이언트 : wget, curl 및 Firefox.
은 여기 주어진 PHP와 같은 정확하게 일을 할 것 : Creating a signed S3 URL with Javascript이 미국 표준에 대해 생성 된 URL입니다. 버킷은 파일 "에 foo.txt"그래서
는 "buck1bar", 내가 무슨 일을하고 있는가?
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
use MIME::Base64;
use Digest::HMAC;
use Digest::SHA;
use URI::Escape;
my $hmac3 = Digest::HMAC->new('OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV', 'Digest::SHA');
$hmac3->add("GET\n\n\n1141889120\n/quotes/nelson");
my $signature = uri_escape(encode_base64 $hmac3->digest, '');
print "vjbyPxybdZaNmGa%2ByT272YEAiv4%3D\n$signature\n";
# vjbyPxybdZaNmGa%2ByT272YEAiv4%3D
# vjbyPxybdZaNmGa%2ByT272YEAiv4%3D
이제 AWS에 즉시 로그인하고이 질문에 게시 한 자격 증명을 무효화하십시오. 공공 장소에 자격 증명을 게시하지 마십시오. 다른 사람이 귀하의 신분을 사기로 사용하면 잠재적으로 상당한 책임을지게됩니다. –
질문의 두 번째 줄 : "아래 코드는 S3 문서의 예제에서 서명과 동일한 서명을 생성합니다." – ftumsh
하하하 내 잘못입니다. 이제, 내 머리가 당신을 대신하여 폭발 한 곳이 있습니다 : * "아래의 코드가 작동하는 것 같으면 내 서명 방법이 괜찮다고 생각합니다. 또한 사용되는 자격 증명은 파일을 업로드하는 데 사용되는 자격 증명이므로 사용법도 좋습니다. IAM 사용자가 아닌 루트 자격 증명입니다. "* Sweet : 아래 코드는 루트 자격 증명을 포함합니다. –