Instead of manually building the string and removing the trailing ';', you could do something like:
```java
return Joiner.on(';').join(Iterables.transform(canonicalizedHeadersMap.keySet(), new Function<String, String>() {
   @Override
   public String apply(String input) {
      return input.toLowerCase();
   }
}));
```