- 我正在尝试从 Ubuntu 16.04 LTS 访问远程服务器。
- 我已将远程服务器 IP 映射到“localhost:60000”。
我可以通过网络浏览器以及 CURL 命令访问服务器。我得到了预期的答复。
不幸的是,我无法从 Java 代码建立连接,这会导致以下异常,
Exception in thread "main" javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No name matching localhost found
我确实在下面的链接中找到了解决方案:
对于 Ubuntu 14.04:https://www.digitalocean.com/community/tutorials/how-to-create-a-ssl-certificate-on-apache-for-ubuntu-14-04
对于 Ubuntu 16.04:https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-16-04
该问题在 Ubuntu 14.04 计算机上已解决,但在 16.04 计算机上未解决。 谁能告诉我我在 Ubuntu 16.04 上做错了什么吗?
最佳答案
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.client.config.ClientConfig;
import com.sun.jersey.api.client.config.DefaultClientConfig;
import com.sun.jersey.client.urlconnection.HTTPSProperties;
TrustManager[] certs = new TrustManager[] {new X509TrustManager() {
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
@Override
public void checkServerTrusted(final X509Certificate[] chain, final String authType) throws CertificateException {}
@Override
public void checkClientTrusted(final X509Certificate[] chain, final String authType) throws CertificateException {}
}};
private Client getSSLClient() throws NoSuchAlgorithmException, KeyManagementException {
HostnameVerifier hostnameVerifier = HttpsURLConnection.getDefaultHostnameVerifier();
ClientConfig config = new DefaultClientConfig();
SSLContext ctx = SSLContext.getInstance("TLS");
ctx.init(null, this.certs, null);
config.getProperties().put(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES, new HTTPSProperties(hostnameVerifier, ctx));
Client client = Client.create(config);
return client;
}
关于java - "java.security.cert.CertificateException: No name matching localhost found"无法在 Ubuntu 16.04 LTS 上解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47427145/