private static String canonicalHeaders(Map<String, String> headers) {
        StringBuilder canonical = new StringBuilder();
        for (Map.Entry<String, String> header : headers.entrySet()) {
            canonical.append(header.getKey()).append(':').append(header.getValue()).append('\n');
        }
        return canonical.toString();
    }
Create canonical header set. The headers are ordered by name.

@param headers The set of headers to sign
@return The signing value from headers. Headers are separated with newline. Each header is
        formatted name:value with each header value whitespace trimmed and minimized
src/main/java/io/fabric8/maven/docker/access/ecr/AwsSigner4Request.java