diff options
| author | Yuval Adam <_@yuv.al> | 2017-09-15 10:09:55 +0300 |
|---|---|---|
| committer | Yuval Adam <_@yuv.al> | 2017-09-15 10:09:55 +0300 |
| commit | ce53b0960ed73f06098e00e1bd1a525342e6bc55 (patch) | |
| tree | b6f011a9536e2e68ebb0b6daaee1ef19c68c3ea6 | |
| parent | 7299fc696f5387aa88f0e483b293f06f5fc7042f (diff) | |
Continue script implementation
| -rwxr-xr-x | route53.sh | 41 |
1 files changed, 24 insertions, 17 deletions
@@ -21,11 +21,9 @@ AWS_SECRET_ACCESS_KEY='' AWS_REGION='us-east-1' AWS_SERVICE='route53domains' -date=`date +%Y%m%d` - -request_body=$(cat <<EOF -<?xml version="1.0" encoding="UTF-8"?> -<ChangeResourceRecordSetsRequest xmlns="https://route53.amazonaws.com/doc/2013-04-01/"> +request_body=" +<?xml version=\"1.0\" encoding=\"UTF-8\"?> +<ChangeResourceRecordSetsRequest xmlns=\"https://route53.amazonaws.com/doc/2013-04-01/\"> <ChangeBatch> <Changes> <Change> @@ -44,10 +42,16 @@ request_body=$(cat <<EOF </Changes> </ChangeBatch> </ChangeResourceRecordSetsRequest> -EOF -) +" + +fulldate=$(date -Iseconds) +signed_headers="host;z-amx-date" +canonical_request="POST\n${PATH}\n\nhost:route53.amazon.com\nx-amz-date:${fulldate}\n\n${signed_headers}\n$(hash $request_body)" -canonical_request="POST\n${PATH}\n\nhost:route53.amazon.com\nx-amz-date:`date -Iseconds`\n\nhost;x-amz-date" +hash() { + msg=$1 + echo -n $msg | openssl dgst -sha256 | sed 's/^.* //' +} sign() { key=$1 @@ -57,21 +61,24 @@ sign() { getSignatureKey() { # usage: getSignatureKey date region service - date_key=$(sign AWS4${AWS_SECRET_ACCESS_KEY_ID} ${date}) + date_key=$(sign AWS4${AWS_SECRET_ACCESS_KEY_ID} $(date +%Y%m%d)) region_key=$(sign $date_key $AWS_REGION) service_key=$(sign $region_key $AWS_SERVICE) signing_key=$(sign $service_key aws4_request) echo -n $signing_key } -amzdate=`date -Iseconds` +credential="{fulldate}\n${date}/${AWS_REGION}/${AWS_SERVICE}/aws4_request" +sigmsg="AWS4-HMAC-SHA256\n${credential}\n$(hash $(echo -e canonical_request))" +sigkey=$(getSignatureKey) +signature=$(sign sigkey sigmsg) -credential="${AWS_ACCESS_KEY_ID}/${date}/${AWS_REGION}/${AWS_SERVICE}/aws4_request" -signed_headers="host;x-amz-date" -signature="" -authorization="AWS4-HMAC-SHA256 Credential=${credential},SignedHeaders=${signed_headers},Signature=${signature}" +authorization="AWS4-HMAC-SHA256 Credential=${AWS_ACCESS_KEY_ID}/${credential},SignedHeaders=${signed_headers},Signature=${signature}" curl \ - -H "x-amz-date=`date -Iseconds`" \ - -H "Authorization=${authorization}}" - "https://${ENDPOINT}" + -X "POST" \ + -H "host:route53.amazonaws.com" \ + -H "x-amz-date:${fulldate}" \ + -H "authorization:${authorization}}" \ + --data $request_body + "https://${ENDPOINT}${PATH}" |
