当前位置: 首页 > 面试题库 >

使用HttpClient 4.0.1与x509证书进行相互身份验证

陶飞英
2023-03-14
问题内容

是否有人对如何使用HTTPClient 4.0.1通过x509证书执行客户端身份验证有任何友好的提示?

感谢您的时间。


问题答案:

这是一些代码,助您一臂之力。该KeyStore是包含客户端证书的对象。如果服务器使用的是自签名证书,或者包含的cacerts文件中的JVM认可的不是CA所签名的证书,则需要使用TrustStore。否则,要使用默认的cacerts文件,请传递nullSSLSockeFactorytruststore参数。

import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpParams;

...

final HttpParams httpParams = new BasicHttpParams();

// load the keystore containing the client certificate - keystore type is probably jks or pkcs12
final KeyStore keystore = KeyStore.getInstance("pkcs12");
InputStream keystoreInput = null;
// TODO get the keystore as an InputStream from somewhere
keystore.load(keystoreInput, "keystorepassword".toCharArray());

// load the trustore, leave it null to rely on cacerts distributed with the JVM - truststore type is probably jks or pkcs12
KeyStore truststore = KeyStore.getInstance("pkcs12");
InputStream truststoreInput = null;
// TODO get the trustore as an InputStream from somewhere
truststore.load(truststoreInput, "truststorepassword".toCharArray());

final SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme("https", new SSLSocketFactory(keystore, keystorePassword, truststore), 443));

final DefaultHttpClient httpClient = new DefaultHttpClient(new ThreadSafeClientConnManager(httpParams, schemeRegistry), httpParams);


 类似资料:
  • 我正在尝试在两个LAMP服务器之间进行相互ssl身份验证。 我实际上有3台服务器。一个是主服务器,另外两个是对其进行SOAP调用的客户端。 在主客户端和一个客户端上,我安装了Comodo Postive SSL证书。我可以从该客户端连接到主客户端并成功进行SSL身份验证。 在第二个客户端上,我安装了一个Lets加密证书。我从他们的网站上获得了根证书(并使用https://whatsmychainc

  • 在不限制客户端证书的情况下,TLS中的相互身份验证有什么用? 以下是我对使用TLS的客户端/相互身份验证的理解。 现在rfc5246表示如下 这不会实现任何身份验证正确吗?例如,如果我有一个服务器信任由世界各地受信任的CA签署的任何证书,那么为什么还要费心于客户端身份验证呢?

  • 您好,我是Spring security的新手, 我的任务是通过匹配从x509客户端证书检索到的用户名,根据active directory对用户进行身份验证。到目前为止,我所做的是启用ssl相互身份验证 现在我有了安全措施,上面的部分工作正常。xml文件,我在其中配置了与x509参考和Active directory配置相关的所有内容 现在我面临的问题是,当我试图检索SecurityContex

  • 我正在尝试为相互身份验证设置ActiveMQ,以便客户端需要证书才能将消息传递给代理。我在代理上创建了一个密钥库和一个信任库,并导出了一个复制到客户端的证书。在客户端,我也做了同样的事情,尽管我使用的是NMS,所以我只使用导出的证书,我将其添加到代理的信任库中。我还将证书添加到另一个本地计算机可信根证书中。 代理的配置如下: ${activemq.base}/conf/login.config $

  • 我正在尝试为部署在Kubernetes集群中的应用程序启用基于TLS的相互身份验证。 希望将对应用程序的访问限制为只有那些具有受信任客户端证书的用户。 基于某些情况/条件,我还希望吊销特定用户的证书,以便该用户不再能够使用其证书访问应用程序。 我尝试在kuberentes ingress controller(基于nginx)中设置Mutual TLS,方法是添加以下注释。 是包含用于颁发客户端证

  • 问题内容: 我需要导入证书,以便向Spring Boot应用程序中的外部服务发出http请求。 我该如何设置Spring Boot来做到这一点? 那里有很多信息,但我发现所有这些都令人困惑。似乎我可能只需要创建类似“ truststore.jks”密钥库的内容并导入正确的证书,然后将一些条目添加到我的application.properties中即可。 问题答案: 打开您的终端或 回答所有问题。在