![](/img/trans.png)
[英]Does Java Apache httpclient need Server certificate to call https service?
[英]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.