LINUX.ORG.RU

История изменений

Исправление i-rinat, (текущая версия) :

Что характерно, алгоритм подписи с тех пор изменился до неузнаваемости, квадратные колеса заменили на сдвоенные треугольные, а велосипедный руль заменили рулем от камаза, но стандартные протоколы шифрования HTTP в амазоне использовать по прежнему не хотят.

Вот алгоритм подписи из документа по архивной ссылке, которую ты привёл:

                Authorization = "AWS" + " " + AWSAccessKeyId + ":" + Signature;

                Signature = Base64( HMAC-SHA1( UTF-8-Encoding-Of( StringToSign ) ) );

                StringToSign = HTTP-Verb + "\n" +
                               Content-MD5 + "\n" +
                               Content-Type + "\n" +
                               Date + "\n" +
                               CanonicalizedAmzHeaders + 
                               CanonicalizedResource;

                CanonicalizedResource = [ "/" + Bucket ] +
                                        <HTTP-Request-URI, from the protocol name up to the query string> +
                                        [ sub-resource, if present. For example "?torrent", or "?acl"];

                CanonicalizedAmzHeaders = <described below>

Вот алгоритм подписи с https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#ConstructingTheAuthenticationHeader, то есть текущей версии:

Authorization = "AWS" + " " + AWSAccessKeyId + ":" + Signature;

Signature = Base64( HMAC-SHA1( UTF-8-Encoding-Of(YourSecretAccessKey), UTF-8-Encoding-Of( StringToSign ) ) );

StringToSign = HTTP-Verb + "\n" +
	Content-MD5 + "\n" +
	Content-Type + "\n" +
	Date + "\n" +
	CanonicalizedAmzHeaders +
	CanonicalizedResource;

CanonicalizedResource = [ "/" + Bucket ] +
	<HTTP-Request-URI, from the protocol name up to the query string> +
	[ subresource, if present. For example "?acl", "?location", or "?logging"];

CanonicalizedAmzHeaders = <described below>

Если выровнять пробельные символы, то разница получится примерно такой:

--- year-2007	2022-04-03 22:26:13.724282591 +0300
+++ year-2022	2022-04-03 22:26:17.392304265 +0300
@@ -1,16 +1,16 @@
 Authorization = "AWS" + " " + AWSAccessKeyId + ":" + Signature;
 
-Signature = Base64( HMAC-SHA1( UTF-8-Encoding-Of( StringToSign ) ) );
+Signature = Base64( HMAC-SHA1( UTF-8-Encoding-Of(YourSecretAccessKey), UTF-8-Encoding-Of( StringToSign ) ) );
 
 StringToSign = HTTP-Verb + "\n" +
     Content-MD5 + "\n" +
     Content-Type + "\n" +
     Date + "\n" +
-    CanonicalizedAmzHeaders + 
+    CanonicalizedAmzHeaders +
     CanonicalizedResource;
 
 CanonicalizedResource = [ "/" + Bucket ] +
     <HTTP-Request-URI, from the protocol name up to the query string> +
-    [ sub-resource, if present. For example "?torrent", or "?acl"];
+    [ subresource, if present. For example "?acl", "?location", or "?logging"];
 
 CanonicalizedAmzHeaders = <described below>

Ты это имел в виду под «изменилось до неузнаваемости»?

Как видишь, никакого S3 API.

Я отвечал на сообщение, в котором ссылка вела на актуальную версию сайта, а не в архив: AWS и в частности S3 как vendor lock (комментарий)

Исходная версия i-rinat, :

Что характерно, алгоритм подписи с тех пор изменился до неузнаваемости, квадратные колеса заменили на сдвоенные треугольные, а велосипедный руль заменили рулем от камаза, но стандартные протоколы шифрования HTTP в амазоне использовать по прежнему не хотят.

Вот алгоритм подписи из документа по архивной ссылке, которую ты привёл:

                Authorization = "AWS" + " " + AWSAccessKeyId + ":" + Signature;

                Signature = Base64( HMAC-SHA1( UTF-8-Encoding-Of( StringToSign ) ) );

                StringToSign = HTTP-Verb + "\n" +
                               Content-MD5 + "\n" +
                               Content-Type + "\n" +
                               Date + "\n" +
                               CanonicalizedAmzHeaders + 
                               CanonicalizedResource;

                CanonicalizedResource = [ "/" + Bucket ] +
                                        <HTTP-Request-URI, from the protocol name up to the query string> +
                                        [ sub-resource, if present. For example "?torrent", or "?acl"];

                CanonicalizedAmzHeaders = <described below>

Вот алгоритм подписи с https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#ConstructingTheAuthenticationHeader, то есть текущей версии:

Authorization = "AWS" + " " + AWSAccessKeyId + ":" + Signature;

Signature = Base64( HMAC-SHA1( UTF-8-Encoding-Of(YourSecretAccessKey), UTF-8-Encoding-Of( StringToSign ) ) );

StringToSign = HTTP-Verb + "\n" +
	Content-MD5 + "\n" +
	Content-Type + "\n" +
	Date + "\n" +
	CanonicalizedAmzHeaders +
	CanonicalizedResource;

CanonicalizedResource = [ "/" + Bucket ] +
	<HTTP-Request-URI, from the protocol name up to the query string> +
	[ subresource, if present. For example "?acl", "?location", or "?logging"];

CanonicalizedAmzHeaders = <described below>

Если выровнять пробельные символы, то разница получится примерно такой:

--- year-2007	2022-04-03 22:26:13.724282591 +0300
+++ year-2022	2022-04-03 22:26:17.392304265 +0300
@@ -1,16 +1,16 @@
 Authorization = "AWS" + " " + AWSAccessKeyId + ":" + Signature;
 
-Signature = Base64( HMAC-SHA1( UTF-8-Encoding-Of( StringToSign ) ) );
+Signature = Base64( HMAC-SHA1( UTF-8-Encoding-Of(YourSecretAccessKey), UTF-8-Encoding-Of( StringToSign ) ) );
 
 StringToSign = HTTP-Verb + "\n" +
     Content-MD5 + "\n" +
     Content-Type + "\n" +
     Date + "\n" +
-    CanonicalizedAmzHeaders + 
+    CanonicalizedAmzHeaders +
     CanonicalizedResource;
 
 CanonicalizedResource = [ "/" + Bucket ] +
     <HTTP-Request-URI, from the protocol name up to the query string> +
-    [ sub-resource, if present. For example "?torrent", or "?acl"];
+    [ subresource, if present. For example "?acl", "?location", or "?logging"];
 
 CanonicalizedAmzHeaders = <described below>

Ты это имел в виду под «изменилось до неузнаваемости»?