游天堂X游聚社区
标题:
计算机HttpClient调用Https的总结
[打印本页]
作者:
天狗
时间:
2011-11-26 14:10
标题:
计算机HttpClient调用Https的总结
一、 HttpClient 调用 https 和调用 http 的在代码上没区别,只是需要做些配置。
我使用的HttpClient jar包为:commons-httpclient-3.1.jar
[blockquote]
示例代码:
public static void main(String[] args)
{
PostMethod postMethod = null;
try
{
HttpClient httpClient = new HttpClient();
postMethod = new PostMethod("https://192.168.2.65:18082/struts2A/makepayment.jsp");
httpClient.executeMethod(postMethod);
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try
{
if (null != postMethod)
{
postMethod.releaseConnection();
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
[/blockquote]
二、 服务端的配置
1. 在Web服务端制作CA证书
在windows命令行中输入:keytool -genkey -alias theAnalis -keyalg RSA -keystore d:/aa.keystore
注意:
a. theAnalis 是服务端证书的别名。
b. 在询问“CN=xx,OU=xx,O=xx,L=xx,ST=xx,C=xx 正确吗?
【否】:”时,输入Y然后敲回车。
c. 在询问“输入<theAnalis>的主密码
(如果和 keystore 密码相同,按回车) :”时,直接敲回车。
d. 生成的证书文为d:/aa.keystore。
2. 配置tomcat 配置文件server.xml ,加入:
<Connector port="18082" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="conf/aa.keystore"
keystorePass="111111" />
其中keystoreFile是刚生成文件的带全路径的名字,也可以把aa.keystore拷贝到tomcat/conf 下,
然后可以这样配置keystoreFile="conf/aa.keystore"
keystorePass是刚才建立证书时候的输入的 keystore 密码。
三、 客户端的配置
1. 用 ie6 导出客户端证书
在地址栏中输入:
https://192.168.2.65:18082/struts2A/makepayment.jsp
等个几秒钟,会弹出窗口。
然后操作顺序为:“查看证书(V)” ---->“详细信息” ----> “复制到文件(C)” ---->
“下一步(N) >”----> “DER 编码二进制 X.509 (.CER)(D)”---->
“下一步(N) >”----> “浏览(R) ...”,并输入文件名---->
“ 下一步(N) >”---->“完成”。
假设导出文件的名字叫test.cer,路径为:d:/key/test.cer。
PS:如果调用一个有合法CA证书的网站的https服务时,比如:
https://migs-mtf.mastercard.com.au/vpcpay
,之所以没弹出警告窗口,是因为浏览器可以识别该网站的CA证书是合法的,并且已经自动下载了它的证书到本地了。
我们可以直接通过浏览器导出证书了,方法如下:
“工具”-- “Internet 选项”--“内容”-- “证书” -- “受信任的证书颁发机构”
--- 在证书列表中找到并选中“RSA Security 2048 V3 ”这项,然后点击“导出”---“下一步”--- 选择“ DER 编码二进制 X.509(.CER) ”--- “下一步” -- 浏览并输入文件名 -- “下一步” --“完成”。
文件的命名随意。
2. 将证书(test.cer)信息导入到JRE的信任证书链中,在命令符下敲入:
在windows命令行下执行(确保配置了java home,我的JDK是1.5的):
keytool -import -keystore "%JAVA_HOME%/jre/lib/security/cacerts"
-storepass changeit
-keypass changeit
-alias theAlias
-file D:/key/test.cer
注意:
a. changeit 是JVM可信任链的默认密码,无需改动。
b.
theAlias 这个可随便取,确保唯一性即可。
c. D:/key/test.cer 是刚才从ie6中导出的客户端证书的全文件名。
欢迎光临 游天堂X游聚社区 (https://bbs.gotvg.com/)
Powered by Discuz! X3.1