in hugegraph-common/src/main/java/org/apache/hugegraph/rest/AbstractRestClient.java [446:485]
private static PoolingHttpClientConnectionManager connectionManager(
String url,
ClientConfig conf) {
String protocol = (String) conf.getProperty("protocol");
if (protocol == null || "http".equals(protocol)) {
return new PoolingHttpClientConnectionManager(TTL, TimeUnit.HOURS);
}
assert "https".equals(protocol);
String trustStoreFile = (String) conf.getProperty("trustStoreFile");
E.checkArgument(trustStoreFile != null && !trustStoreFile.isEmpty(),
"The trust store file must be set when use https");
String trustStorePass = (String) conf.getProperty("trustStorePassword");
E.checkArgument(trustStorePass != null,
"The trust store password must be set when use https");
SSLContext context = SslConfigurator.newInstance()
.trustStoreFile(trustStoreFile)
.trustStorePassword(trustStorePass)
.securityProtocol("SSL")
.createSSLContext();
TrustManager[] trustAllManager = NoCheckTrustManager.create();
try {
context.init(null, trustAllManager, new SecureRandom());
} catch (KeyManagementException e) {
throw new ClientException("Failed to init security management", e);
}
HostnameVerifier verifier = new HostNameVerifier(url);
ConnectionSocketFactory httpSocketFactory, httpsSocketFactory;
httpSocketFactory = PlainConnectionSocketFactory.getSocketFactory();
httpsSocketFactory = new SSLConnectionSocketFactory(context, verifier);
Registry<ConnectionSocketFactory> registry =
RegistryBuilder.<ConnectionSocketFactory>create()
.register("http", httpSocketFactory)
.register("https", httpsSocketFactory)
.build();
return new PoolingHttpClientConnectionManager(registry, null,
null, null, TTL,
TimeUnit.HOURS);
}