ice world
There is nothing too difficult if you put your heart into it.
posts - 104, comments - 103, trackbacks - 0, articles - 0
導航
BlogJava
首頁
新隨筆
聯系
聚合
管理
<
2012年6月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(8)
給我留言
查看公開留言
查看私人留言
隨筆分類
ArcGIS(2)
CSS(4)
Database(14)
eclipse(10)
Hibernate(1)
Java(30)
Javascript(6)
Others(15)
Strut1(3)
Tomcat(7)
Weblogic(1)
Windows(13)
加解密(5)
隨筆檔案
2016年8月 (1)
2016年1月 (1)
2014年3月 (1)
2014年1月 (3)
2013年11月 (1)
2013年9月 (1)
2013年8月 (1)
2013年7月 (2)
2013年6月 (1)
2013年3月 (1)
2013年2月 (4)
2013年1月 (1)
2012年9月 (1)
2012年7月 (2)
2012年6月 (3)
2012年5月 (8)
2012年4月 (1)
2011年11月 (1)
2011年10月 (1)
2011年9月 (1)
2011年8月 (1)
2011年6月 (2)
2011年5月 (3)
2011年4月 (61)
2007年12月 (1)
搜索
最新評論
1.?re: Failed to load JavaHL Library解決方法
嘖嘖,一語中的。
--Jerry Zhang
2.?re: Error 1935的解決方法
我安裝上面的方法成功了,各位同學們,千萬別忘記修改注冊表后重啟電腦:)
--mentoruser
3.?re: CXF+Spring+Tomcat簡明示例
評論內容較長,點擊標題查看
--無異
4.?re: CXF+Spring+Tomcat簡明示例
評論內容較長,點擊標題查看
--chiangpan
5.?re: Failed to load JavaHL Library解決方法[未登錄]
頂頂頂
--小明
閱讀排行榜
1.?Failed to load JavaHL Library解決方法(78926)
2.?CXF+Spring+Tomcat簡明示例(51159)
3.?java RSA加密解密(42690)
4.?Java Tomcat SSL 服務端/客戶端雙向認證(一)(32925)
5.?Java DES文件加密解密 javax.crypto.BadPaddingException: Given final block not properly padded(30899)
評論排行榜
1.?CXF+Spring+Tomcat簡明示例(27)
2.?Java Tomcat SSL 服務端/客戶端雙向認證(一)(22)
3.?Java數字證書對文件/加密/解密/簽名/校驗簽名(8)
4.?java RSA加密解密(7)
5.?Failed to load JavaHL Library解決方法(6)
Java Tomcat SSL 服務端/客戶端雙向認證のApache HttpClient(二)
Posted on 2012-06-05 09:32
IceWee
閱讀(5224)
評論(1)
編輯
收藏
所屬分類:
Java
、
Tomcat
本演示例程是繼
Java Tomcat SSL 服務端/客戶端雙向認證(一)
,密鑰庫可證書的生成腳本不再重復黏貼,僅僅是用程序來代替瀏覽器訪問服務端。
例程中使用到了Apache HttpClient庫,版本為4.1.3
全部依賴庫:
commons-logging-1.1.1.jar
httpclient-4.1.3.jar
httpcore-4.1.4.jar
httpmime-4.1.3.jar(上傳文件使用)
在(一)中的程序包中創建一個客戶端類:HttpsClient
HttpsClient.java
package
com.icesoft.client;
import
java.io.BufferedReader;
import
java.io.File;
import
java.io.FileInputStream;
import
java.io.InputStream;
import
java.io.InputStreamReader;
import
java.security.KeyStore;
import
org.apache.http.HttpEntity;
import
org.apache.http.HttpResponse;
import
org.apache.http.client.HttpClient;
import
org.apache.http.client.methods.HttpGet;
import
org.apache.http.conn.scheme.Scheme;
import
org.apache.http.conn.ssl.SSLSocketFactory;
import
org.apache.http.impl.client.DefaultHttpClient;
import
org.apache.http.util.EntityUtils;
public
class
HttpsClient
{
private
static
final
String KEY_STORE_TYPE_JKS
=
"
jks
"
;
private
static
final
String KEY_STORE_TYPE_P12
=
"
PKCS12
"
;
private
static
final
String SCHEME_HTTPS
=
"
https
"
;
private
static
final
int
HTTPS_PORT
=
8443
;
private
static
final
String HTTPS_URL
=
"
https://127.0.0.1:8443/HttpClientSSL/sslServlet
"
;
private
static
final
String KEY_STORE_CLIENT_PATH
=
"
E:/ssl/client.p12
"
;
private
static
final
String KEY_STORE_TRUST_PATH
=
"
E:/ssl/client.truststore
"
;
private
static
final
String KEY_STORE_PASSWORD
=
"
123456
"
;
private
static
final
String KEY_STORE_TRUST_PASSWORD
=
"
123456
"
;
public
static
void
main(String[] args)
throws
Exception
{
ssl();
}
private
static
void
ssl()
throws
Exception
{
HttpClient httpClient
=
new
DefaultHttpClient();
try
{
KeyStore keyStore
=
KeyStore.getInstance(KEY_STORE_TYPE_P12);
KeyStore trustStore
=
KeyStore.getInstance(KEY_STORE_TYPE_JKS);
InputStream ksIn
=
new
FileInputStream(KEY_STORE_CLIENT_PATH);
InputStream tsIn
=
new
FileInputStream(
new
File(KEY_STORE_TRUST_PATH));
try
{
keyStore.load(ksIn, KEY_STORE_PASSWORD.toCharArray());
trustStore.load(tsIn, KEY_STORE_TRUST_PASSWORD.toCharArray());
}
finally
{
try
{ ksIn.close(); }
catch
(Exception ignore)
{}
try
{ tsIn.close(); }
catch
(Exception ignore)
{}
}
SSLSocketFactory socketFactory
=
new
SSLSocketFactory(keyStore, KEY_STORE_PASSWORD, trustStore);
Scheme sch
=
new
Scheme(SCHEME_HTTPS, HTTPS_PORT, socketFactory);
httpClient.getConnectionManager().getSchemeRegistry().register(sch);
HttpGet httpget
=
new
HttpGet(HTTPS_URL);
System.out.println(
"
executing request
"
+
httpget.getRequestLine());
HttpResponse response
=
httpClient.execute(httpget);
HttpEntity entity
=
response.getEntity();
System.out.println(
"
----------------------------------------
"
);
System.out.println(response.getStatusLine());
if
(entity
!=
null
)
{
System.out.println(
"
Response content length:
"
+
entity.getContentLength());
BufferedReader bufferedReader
=
new
BufferedReader(
new
InputStreamReader(entity.getContent()));
String text;
while
((text
=
bufferedReader.readLine())
!=
null
)
{
System.out.println(text);
}
bufferedReader.close();
}
EntityUtils.consume(entity);
}
finally
{
httpClient.getConnectionManager().shutdown();
}
}
}
啟動Tomcat,運行HttpsClient,控制臺返回:
OK,和使用瀏覽器訪問得到的結果一模一樣!
全文完!
Feedback
#
re: Java Tomcat SSL 服務端/客戶端雙向認證のApache HttpClient(二)
回復
更多評論
2013-05-14 10:01 by
zhyg
為什么我的一直是“這是一個HTTPS請求,但是沒有可用的客戶端證書”?
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
Java日常隨意記
FTPClient上傳文件蝸牛速度的解決方法
HttpClientUtils
Java獲取本機IP列表
Exception loading sessions from persistent storage
Java Tomcat SSL 服務端/客戶端雙向認證のApache HttpClient(二)
Java Tomcat SSL 服務端/客戶端雙向認證(一)
Java MD5校驗工具類
ExceptionUtil 獲取異常堆棧內容
Java Zip Utils 壓縮/解壓縮工具包
Powered by:
BlogJava
Copyright © IceWee
主站蜘蛛池模板:
国产大陆亚洲精品国产
|
亚洲精品综合一二三区在线
|
免费无码成人AV片在线在线播放
|
亚洲一本综合久久
|
国产亚洲AV无码AV男人的天堂
|
自拍偷自拍亚洲精品情侣
|
国产亚洲色婷婷久久99精品91
|
亚洲精品成人片在线播放
|
亚洲乱码一区二区三区在线观看
|
亚洲综合伊人久久大杳蕉
|
亚洲人色婷婷成人网站在线观看
|
亚洲色精品vr一区二区三区
|
亚洲国产精品无码AAA片
|
亚洲成色在线影院
|
亚洲成a人片在线观看中文app
|
亚洲人成综合在线播放
|
一区二区亚洲精品精华液
|
亚洲精品乱码久久久久蜜桃
|
2019亚洲午夜无码天堂
|
亚洲国产区男人本色
|
国产亚洲男人的天堂在线观看
|
久久亚洲国产成人精品性色
|
亚洲综合久久久久久中文字幕
|
亚洲av片不卡无码久久
|
亚洲国产欧美国产综合一区
|
免费人成在线观看播放a
|
中文字幕免费在线播放
|
一区二区免费视频
|
久久久久久国产精品免费免费
|
99精品视频在线免费观看
|
久久天天躁狠狠躁夜夜免费观看
|
日韩激情无码免费毛片
|
久久亚洲国产精品五月天婷
|
精品无码一区二区三区亚洲桃色
|
亚洲综合一区二区精品久久
|
中文字幕乱码亚洲无线三区
|
免费国产高清毛不卡片基地
|
青青操在线免费观看
|
大学生一级毛片免费看
|
亚洲精品国产va在线观看蜜芽
|
亚洲成熟xxxxx电影
|