HttpClient访问https网站的问题

njcuiniao 2008-09-08 01:18:25
我想用HttpClient访问一个https网站,我已经拥有服务端证书和客户端证书,我将服务端证号和客户端证号都导入到jdk的cacerts中,也按着网上的办法:
httpclient完全支持ssl连接方式。通常,如果不需要进行客户端认证和服务器端认证的ssl连接,httpclient的处理方式是和http方式完全一样。
现在这里是讲的是需要客户端认证数字证书时的httpclient处理方式(因为需要客户端认证时,连接会被主动关闭)。
1。使用ie访问你要连结的url地址,这时你会看到弹出一个询问是否继续和服务器建立连接的对话框(安全警报)。选择“查看证书”->“详细信息”->“复制文件到”导出数字证书(例: server.cer或server.crt)。
2。使用导出的数字证书来创建你的keystore
keytool -import -alias "my server cert" -file server.cer -keystore my.truststore
keytool -genkey -v -alias "my client key" -validity 365 -keystore my.keystore
3。在引入AuthSSLProtocolSocketFactory.java,AuthSSLX509TrustManager.java和AuthSSLInitializationError后在你的代码里按下面的例子里来进行ssl连接
Protocol authhttps = new Protocol("https",
new AuthSSLProtocolSocketFactory(
new URL("file:my.keystore"), "mypassword",
new URL("file:my.truststore"), "mypassword"), 8443);
HttpClient client = new HttpClient();
client.getHostConfiguration().setHost("sh.12530", 8443, authhttps);
/*只能使用相对路径*/
GetMethod httpget = new GetMethod("/");
client.executeMethod(httpget);

执行后报错:
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
我确认程序是已经找到服务端证书了,可能在客户端认证的时候出错了,请问我错在哪了,怎么办?
...全文
3779 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
pywepe 2011-07-15
  • 打赏
  • 举报
回复
老帖 怎么进首页了

软件行业经典书籍
pywepe 2011-07-15
  • 打赏
  • 举报
回复


你的版本低


软件行业经典书籍
meadking 2008-10-11
  • 打赏
  • 举报
回复

HttpClient httpclient = new HttpClient();
GetMethod httpget = new GetMethod("https://www.verisign.com/");
try {
httpclient.executeMethod(httpget);
System.out.println(httpget.getStatusLine());
} finally {
httpget.releaseConnection();
}

zywuying 2008-09-17
  • 打赏
  • 举报
回复
虽然不会也顶一下

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧