### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

When performing a putObject using Java AWS SDK with a providing only the checksum algorithm localstack returns a 400 InvalidRequest with error: `Value for x-amz-checksum-sha256 header is invalid.`

localstack logs:

```
2022-08-11T11:59:45.411 DEBUG --- [   asgi_gw_0] l.aws.serving.wsgi         : PUT localstack:4566/integration-bucket/testObjectKey_5f1gUa
2022-08-11T11:59:45.433  INFO --- [   asgi_gw_0] localstack.request.aws     : AWS s3.PutObject => 400 (InvalidRequest); PutObjectRequest({'ACL': None, 'Bucket': 'integration-bucket', 'CacheControl': None, 'ContentDisposition': None, 'ContentEncoding': 'aws-chunked', 'ContentLanguage': None, 'ContentLength': 340, 'ContentMD5': None, 'ContentType': 'application/octet-stream', 'ChecksumAlgorithm': 'SHA256', 'ChecksumCRC32': None, 'ChecksumCRC32C': None, 'ChecksumSHA1': None, 'ChecksumSHA256': None, 'Expires': None, 'GrantFullControl': None, 'GrantRead': None, 'GrantReadACP': None, 'GrantWriteACP': None, 'Key': 'testObjectKey_5f1gUa', 'Metadata': {}, 'ServerSideEncryption': None, 'StorageClass': None, 'WebsiteRedirectLocation': None, 'SSECustomerAlgorithm': None, 'SSECustomerKey': None, 'SSECustomerKeyMD5': None, 'SSEKMSKeyId': None, 'SSEKMSEncryptionContext': None, 'BucketKeyEnabled': None, 'RequestPayer': None, 'Tagging': None, 'ObjectLockMode': None, 'ObjectLockRetainUntilDate': None, 'ObjectLockLegalHoldStatus': None, 'ExpectedBucketOwner': None, 'Body': <localstack.http.asgi.HTTPRequestEventStreamAdapter object at 0x7f69676d64a0>}, headers={'Host': 'localstack:4566', 'amz-sdk-invocation-id': 'a2de9efb-37a6-edbe-9fea-8bc0bfe9f616', 'amz-sdk-request': 'attempt=1; max=4', 'Authorization': 'AWS4-HMAC-SHA256 Credential=accesskey/20220811/us-east-1/s3/aws4_request, SignedHeaders=amz-sdk-invocation-id;amz-sdk-request;content-encoding;content-length;content-type;host;x-amz-content-sha256;x-amz-date;x-amz-decoded-content-length;x-amz-sdk-checksum-algorithm;x-amz-trailer, Signature=520a45c4211245e316fb696748efd0077cb4582a2f9f65f1ff3d6fb1578f61f3', 'Content-Encoding': 'aws-chunked', 'Content-Type': 'application/octet-stream', 'Expect': '100-continue', 'User-Agent': 'aws-sdk-java/2.17.155 Linux/5.10.102.1-microsoft-standard-WSL2 OpenJDK_64-Bit_Server_VM/11.0.16+8-LTS Java/11.0.16 vendor/Azul_Systems__Inc. io/sync http/Apache cfg/retry-mode/legacy', 'x-amz-content-sha256': 'STREAMING-AWS4-HMAC-SHA256-PAYLOAD-TRAILER', 'X-Amz-Date': '20220811T115945Z', 'x-amz-decoded-content-length': '10', 'x-amz-sdk-checksum-algorithm': 'SHA256', 'x-amz-trailer': 'x-amz-checksum-sha256', 'X-Amzn-Trace-Id': 'Root=1-da6881b4-014a482e02f8da9638b20691;Parent=e90ba8e1cedb7f04;Sampled=1', 'Content-Length': '340', 'Connection': 'Keep-Alive', 'x-localstack-tgt-api': 's3', 'x-localstack-edge': 'http://localstack:4566', 'X-Forwarded-For': '127.0.0.1, localstack:4566'}); InvalidRequest(Value for x-amz-checksum-sha256 header is invalid., headers={'Content-Type': 'application/xml', 'Content-Length': '150', 'Location': '/integration-bucket', 'Last-Modified': 'Thu, 11 Aug 2022 11:59:45 GMT', 'x-amz-request-id': '0D5C04B30BC16C20', 'x-amz-id-2': 'MzRISOwyjmnup0D5C04B30BC16C207/JypPGXLh0OVFGcJaaO3KW/hRAqKOpIEEp', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'HEAD,GET,PUT,POST,DELETE,OPTIONS,PATCH', 'Access-Control-Allow-Headers': 'authorization,cache-control,content-length,content-md5,content-type,etag,location,x-amz-acl,x-amz-content-sha256,x-amz-date,x-amz-request-id,x-amz-security-token,x-amz-tagging,x-amz-target,x-amz-user-agent,x-amz-version-id,x-amzn-requestid,x-localstack-target,amz-sdk-invocation-id,amz-sdk-request', 'Access-Control-Expose-Headers': 'etag,x-amz-version-id'})
```

### Expected Behavior

No error is returned and file is uploaded with checksum.

### How are you starting LocalStack?

With a docker-compose file

### Steps To Reproduce


Java AWS snippet:

```java
S3Client s3Client = S3Client.builder().build();
String bucketName = "integration-bucket";
String key = "testObjectKey_5f1gUa";
byte[] fileContent = "Hello Blob".getBytes(StandardCharsets.UTF_8);

PutObjectRequest request = PutObjectRequest.builder()
        .bucket(bucketName)
        .key(key)
        .checksumAlgorithm(ChecksumAlgorithm.SHA256)
        .build();
s3Client.putObject(request, RequestBody.fromBytes(fileContent));
```

### Environment

```markdown
- OS: Docker on Windows 10
- LocalStack: latest
```


### Anything else?

The integrity checks are currently something that is still in progress in #6008 but PR #6619 was made for this feature a couple of days ago. 

According [the documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html), when using an SDK it is not mandatory to calculate the checksum yourself:

> When you're using an SDK, you can set the value of the x-amz-sdk-checksum-algorithm parameter to the algorithm that you want Amazon S3 to use when calculating the checksum. Amazon S3 automatically calculates the checksum value.
> When you're using the REST API, you don't use the x-amz-sdk-checksum-algorithm parameter. Instead, you use one of the algorithm-specific headers (for example, x-amz-checksum-crc32).

However the "Amazon S3 automatically calculates the checksum value" part might actually be misleading according to [the API documentation](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html):

> x-amz-sdk-checksum-algorithm: Indicates the algorithm used to create the checksum for the object when using the SDK. This header will not provide any additional functionality if not using the SDK. When sending this header, there must be a corresponding x-amz-checksum or x-amz-trailer header sent.

Versions before this PR (1.0.3) would not throw an error but return the following contents when retrieving the object:

```
a;chunk-signature=a70d7ab7401685b64fea62f21aa3a6b726687d74a14a94d0607f407e6bd17c68
Hello Blob
0;chunk-signature=58755adb9d0360af56399ae88a8a2d2c319c262a3eb518739bff1aeb93482b03
x-amz-checksum-sha256:/cvtq0zfnMYt+eWeUUr1zGtu/6eL8ahMzDU8PmUaFys=
x-amz-trailer-signature:cc210b37d675e70b192e09889b95910411ddaca666c5913f95855f7841debe87
```

In this case, the `x-amz-trailer` is used instead of the `x-amz-checksum`. The value of the `x-amz-trailer` (=`x-amz-checksum-sha256`) refers to some extra trailing data in the body.

It's unclear whether the chunked data is supported by localstack, there is some code for stripping chunk-signatures in there but this is only done when the "Content-MD5" header is set in a function called `check_md5_content`: https://github.com/localstack/localstack/blob/95e9ba2fd950df46cadf2810410aadfef235af0d/localstack/services/s3/s3_listener.py#L997

I don't know the fully story, but the stripping of the signatures seems out of place (unrelated to the MD5 checksum)

@pytest.mark.aws_validated
    @pytest.mark.xfail(
        reason="Behaviour diverges from AWS, Access-Control-* headers always added",
    )
    def test_s3_get_response_headers_without_origin(self, s3_bucket, aws_client):
        # put 
        _key = "key-by-hostname"
        aws_client.s3.put_(Bucket=s3_bucket, Key=_key, Body="something")
        aws_client.s3.put_bucket_cors(
            Bucket=s3_bucket,
            CORSConfiguration={
                "CORSRules": [
                    {
                        "AllowedMethods": ["GET", "PUT", "POST"],
                        "AllowedOrigins": ["*"],
                        "ExposeHeaders": ["ETag", "x-amz-version-id"],
                    }
                ]
            },
        )
        # get 
        url = aws_client.s3.generate_presigned_url(
            "get_", Params={"Bucket": s3_bucket, "Key": _key}
        )
        response = .get(url, verify=False)
        assert "Access-Control-Expose-Headers" not in response.headers
        assert "Access-Control-Allow-Methods" not in response.headers
        assert "Access-Control-Allow-Origin" not in response.headers
    @staticmethod
    def _get_cors_result_header_snapshot_transformer(snapshot):