COOPR-520: Add mutual auth support

Please review
Seems like you just want to wrap all the non-runtime exception. You can simply do:

```java
try {
  ...
} catch (Exception ex) {
  if (ex instanceof RuntimeException) {
    throw ((RuntimeException) ex);
  }
  throw new IOException(ex);
}
```