用新浪微博登录

只需一步,快速搞定

 找回密码
 立即注册

用新浪微博登录

只需一步,快速搞定

查看: 3193|回复: 0
打印 上一主题 下一主题

计算机HttpClient调用Https的总结

[复制链接]

该用户从未签到

667

主题

2111

帖子

5570

积分

LV 11.会员

MS爱好者!!!!

积分
5570

社区居民偶尔光临工蜂最爱沙发在线达人社区平民做个有钱人略有小成常驻会员忠实会员

跳转到指定楼层
楼主
发表于 2011-11-26 14:10:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 |          
一、  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中导出的客户端证书的全文件名。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

     
    Archiver|手机版|小黑屋|( 沪ICP备12034951号 )

GMT+8, 2024-4-28 06:23 , Processed in 0.131972 second(s), 29 queries .

© 2001-2011 Powered by Discuz! X3.1

快速回复 返回顶部 返回列表