繁体   English   中英

具有HTTPS证书的HttpClient

[英]HttpClient with HTTPS certificate

我对我们的Ruby on Rails团队有些羡慕,他们需要使用相同的Web服务,要求使用证书对HTTPS请求进行签名。 他们抓住一颗宝石,用单行代码签署请求,完成菜肴……

但是,Java要求我们将证书导入到密钥库中(试图避免这种情况),或者在内存中创建一个证书。 但是,一旦我这样做,似乎对请求进行实际签名的唯一选择就是使用HttpUrlConnection类。 HttpUrlConnection示例

我希望能够使用现有代码签署请求,该代码使用apache的DefaultHttpClient client = new DefaultHttpClient();。 -但我看不到使用内存中的密钥库让Http客户端签名请求的方法。

有人面对吗?

看看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指向的keystoreUrl HttpClient SSL Guide上阅读有关此内容的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM