Java 使用AsyncHttpClient自定义SSL证书

Java 使用AsyncHttpClient自定义SSL证书,java,ssl,ssl-certificate,asynchttpclient,Java,Ssl,Ssl Certificate,Asynchttpclient,java应用程序需要使用自定义证书向服务器发出一些请求。操作系统包含给定服务器的另一个证书,无论是否添加自定义证书文件,都没有区别 流程类似于 AsyncHttpClientConfig asyncHttpClientConfig = new DefaultAsyncHttpClientConfig .Builder() .setMaxRequestRetry(1) .setMaxConnections(1) .setMaxConnectionsPerHost(1

java应用程序需要使用自定义证书向服务器发出一些请求。操作系统包含给定服务器的另一个证书,无论是否添加自定义证书文件,都没有区别

流程类似于

AsyncHttpClientConfig asyncHttpClientConfig = new DefaultAsyncHttpClientConfig
    .Builder()
    .setMaxRequestRetry(1)
    .setMaxConnections(1)
    .setMaxConnectionsPerHost(1)
    .setRequestTimeout(10000)
    .setConnectTimeout(10000)
    .setFollowRedirect(true)
    .setSslContext(buildSslContext())
    .build();

AsyncHttpClient asyncHttpClient = new DefaultAsyncHttpClient(asyncHttpClientConfig);

String url = "www.example.com"
ListenableFuture<Response> res = asyncHttpClient.prepareGet(url).execute();
Response r = res.get();
System.out.println(r);
我还测试了
curl

# curl -v www.example.com
# curl -v --cacert /path/to/cert.pem www.example.com
这没什么区别。但是,如果我删除了
/etc/ssl/
的内容,它将根本无法访问服务器


是否有可能为给定服务器指定自定义证书,并为其他服务器使用操作系统中的默认证书?我对异步http客户端使用2.8.0版。

通常需要两个文件,一个带证书,一个带私钥。
cert.pem
是否同时包含这两者?如果是,请尝试拆分它们。@Robert是的,它同时包含两个。为什么要拆分它们?通常需要两个文件,一个带证书,一个带私钥。
cert.pem
是否同时包含这两者?如果是,请尝试拆分它们。@Robert是的,它同时包含两个。为什么要把他们分开?
# curl -v www.example.com
# curl -v --cacert /path/to/cert.pem www.example.com