Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
org.jolokia.client.exception.j4peption:联系服务器时发生IO错误:javax.net.ssl.SSLException:证书中的主机名未';不匹配_Java_Ssl_Hawtio_Jolokia - Fatal编程技术网

org.jolokia.client.exception.j4peption:联系服务器时发生IO错误:javax.net.ssl.SSLException:证书中的主机名未';不匹配

org.jolokia.client.exception.j4peption:联系服务器时发生IO错误:javax.net.ssl.SSLException:证书中的主机名未';不匹配,java,ssl,hawtio,jolokia,Java,Ssl,Hawtio,Jolokia,我使用jolokia客户端连接到fuse服务器,该服务器使用https进行web访问。我得到以下例外 org.jolokia.client.exception.j4peption:联系服务器时发生IO错误:javax.net.ssl.SSLException:证书中的主机名不匹配:!= 位于org.jolokia.client.J4pClient.mapException(J4pClient.java:333) 位于org.jolokia.client.J4pClient.execute(J4p

我使用jolokia客户端连接到fuse服务器,该服务器使用https进行web访问。我得到以下例外

org.jolokia.client.exception.j4peption:联系服务器时发生IO错误:javax.net.ssl.SSLException:证书中的主机名不匹配:!= 位于org.jolokia.client.J4pClient.mapException(J4pClient.java:333) 位于org.jolokia.client.J4pClient.execute(J4pClient.java:198) 位于org.jolokia.client.J4pClient.execute(J4pClient.java:168) 在org.jolokia.client.J4pClient.execute(J4pClient.java:117)

我已经将10.16.205.20的证书导入到我的本地TrustStore(cacerts)中,我的客户端应用程序正在运行jolokia客户端。我还验证了hosts文件是否包含10.16.205.20服务器上证书中使用的域的条目。我正在使用下面的代码连接

J4pClient client = J4pClient.url(baseUrl).user(user.getName()).password(user.getPassword()).authenticator(new BasicAuthenticator().preemptive()).build();
            J4pExecRequest request = new J4pExecRequest("org.apache.karaf:type=bundles,name=root","list");
            J4pExecResponse response = client.execute(request);
            JSONObject obj = response.asJSONObject();
            ((CloseableHttpClient)client.getHttpClient()).close();

此代码在使用http部署的服务器上运行良好。如果我遗漏了什么,请告诉我。

您需要让您的客户使用绕过此检查的ConnectionSocketFactory

例如,看看下面的代码(代码是Kotlin,但我想您可以轻松地将其转换为java)


我和霍修也一样。javax.net.ssl.SSLException:证书中的主机名不匹配如果我使用的是域名而不是ip,我可以连接。有没有办法禁用jolokia osgi中的主机名验证?您使用的是什么版本的jolokia?并查看jolokia文档-其中包含大量信息-
val sslCtx: SSLContext = SSLContexts
    .custom()
    .loadTrustMaterial(null, TrustSelfSignedStrategy())
    .build()

val cf: ConnectionSocketFactory = SSLConnectionSocketFactory(sslCtx, SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER)

J4pClient.url(s.jolokiaUrl)
    .sslConnectionSocketFactory(cf)
    .connectionTimeout(timeout.toMillis().toInt())
    .build()