有人可以告诉我如何在Web服务调用期间忽略ssl证书。 我正在调用https weburl来获取api响应,但是获得了peer not authenticated错误。 旧示例不起作用,因为某些方法已被弃用,因此有人可以告诉我/提供一些示例代码,以便我不会收到此错误。
我刚才知道问题是由证书引起的。 我正在使用第三方API进行db调用&他们的域名有ssl证书 即www.dbprovider.com(SSL证书是* .dbprovider.com) &安培;他们为我们创建了一个类似myapp.dbprovider.com的子域名
所以现在问题是当我尝试命中
时没有可用的对等证书openssl s_client -ssl3 -showcerts -connect myapp.dbprovider.com:443
openssl s_client -tls1 -showcerts -connect myapp.dbprovider.com:443
有人可以告诉我现在应该怎么做。是否有任何对dbprovider站点的控制,以便他们可以为我提供一些配置,或者我必须编写代码来忽略他们的证书(但是为了忽略证书,我们没有得到他们的同行证书)
答案 0 :(得分:0)
使用此处所述的自定义SSLSocketFactory
:http://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html#d5e512。一个忽略自签名证书的工厂是EasySSLProtocolSocketFactory
。
ProtocolSocketFactory factory = new EasySSLProtocolSocketFactory();
try {
URI uri = new URI(config.getBaseUrl());
int port = uri.getPort();
if (port == -1) {
port = 443;
}
Protocol easyHttps = new Protocol(uri.getScheme(), factory, port);
hostConfiguration.setHost(uri.getHost(), port, easyHttps);
} catch (URISyntaxException e) {
throw new IOException("could not parse URI " + config.getBaseUrl(), e);
}
来源:http://frightanic.com/software-development/self-signed-certificates-in-apache-httpclient/