0

有人可以告诉我如何在 Web 服务调用期间忽略 ssl 证书。我正在调用 https weburl 以获取 api 响应,但得到 peer not authenticated 错误。旧示例不起作用,因为某些方法已被弃用,因此有人可以告诉我/提供一些示例代码,这样我就不会收到此错误。

我才知道问题出在证书上。我正在使用 3rd 方 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 站点上是否有任何控制,以便他们可以为我提供一些配置,或者我必须编写代码来忽略他们的证书(但对于忽略证书,我们没有获得他们的对等证书)

4

1 回答 1

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/

于 2013-02-19T12:48:16.093 回答