java - 带有 HTTPS 证书的 HttpClient

标签 java csr

我有点羡慕我们的 Ruby on Rails 团队,他们需要使用相同的 Web 服务,需要使用证书对 HTTPS 请求进行签名。他们拿起一颗 gem ,用一行代码签署请求,菜肴就完成了......

然而,Java 要求我们将证书导入到我们的 keystore 中(试图避免这种情况),或者在内存中创建一个证书......这很好。但是,一旦我这样做了,实际签署请求的唯一选择似乎是使用 HttpUrlConnection 类。 HttpUrlConnection example

我希望能够使用我现有的代码签署请求,该代码使用 apache 的 DefaultHttpClient client = new DefaultHttpClient(); - 但我没有找到让 Http 客户端使用内存 keystore 签署请求的方法。

有人遇到过这种情况吗?

最佳答案

看看AuthSSLProtocolSocketFactory.java 。您应该能够像这样执行 SSL 客户端身份验证(未经测试的代码);

Protocol.registerProtocol("https", 
new Protocol("https", new AuthSSLProtocolSocketFactory(keystoreUrl, keystorePassword, truststoreUrl, truststorePassword), 443));
HttpClient httpclient = new HttpClient();
GetMethod httpget = new GetMethod("https://www.whatever.com/");
try {
  httpclient.executeMethod(httpget);
  System.out.println(httpget.getStatusLine());
} finally {
  httpget.releaseConnection();
}

您的客户端证书进入由 keystoreUrl 指向的 keystore 。阅读更多相关信息 HttpClient SSL Guide .

关于java - 带有 HTTPS 证书的 HttpClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19170440/

相关文章:

java - 这是 Java SynchronizedCollection 类中的错误吗?

java - Ant Build - 找不到taskdef

java - 对日期 ListArray 以及标题的第二个数组进行排序

node.js - 主机名/IP 与证书的替代名称不匹配

java - 如何使用 bouncycaSTLe 从 pkcs7 文件获取证书?

java - 开始部署应用程序时,嵌入式 Tomcat 挂起

java - 通过单击网站按钮打开 android 应用程序?

ios - CSR 请求钥匙串(keychain) iOS 分发证书

iOS 开发人员/产品 key /证书重新开始

ssl - 为多个域设置 httpS