I’m trying to connect to my Jira via the atlassian rest api java framework:
JiraRestClientFactory factory = new AsynchronousJiraRestClientFactory();
JiraRestClient client = factory.createWithBasicHttpAuthentication(uri, userName, password);
But this causes a errors:
javax.net.ssl.SSLHandshakeException: General SSLEngine problem
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
I think this happens because I use a self-signed certificate for my Jira. Is there a way to turn of certificate validation for the JiraRestClientFactory
at least for development purposes?
Advertisement
Answer
Thanks for the replies! The solution I ended up with is based on Karol Dowbeckis answer:
JiraRestClientFactory factory = new AsynchronousJiraRestClientFactory();
HttpClientOptions options = new HttpClientOptions();
options.setTrustSelfSignedCertificates(true);
DefaultHttpClientFactory defaultHttpClientFactory = new DefaultHttpClientFactory(new NoOpEventPublisher(),
new RestClientApplicationProperties(JIRA_URI), new ThreadLocalContextManager() {
@Override
public Object getThreadLocalContext() {
return null;
}
@Override
public void setThreadLocalContext(Object context) {
}
@Override
public void clearThreadLocalContext() {
}
});
HttpClient httpClient = defaultHttpClientFactory.create(options);
AtlassianHttpClientDecorator atlassianHttpClientDecorator = new AtlassianHttpClientDecorator(httpClient, new BasicHttpAuthenticationHandler(userName, password)) {
@Override
public void destroy() throws Exception {
defaultHttpClientFactory.dispose(httpClient);
}
};
JiraRestClient client = factory.create(JIRA_URI, atlassianHttpClientDecorator);
I had to add my own simple implementations of NoOpEventPublisher
and RestClientApplicationProperties
because the atlassian classes are private.
Additional information for this code sample
- this example is using the jira rest client version 4.0.0
NoOpEventPublisher
is just an implementation ofcom.atlassian.event.api.EventPublisher
with empty method bodies.RestClientApplicationProperties
implementscom.atlassian.sal.api.ApplicationProperties
returning my jira url ingetBaseUrl
and “4.0.0” ingetVersion