<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    俊星的BLOG

    HTTP Client及HTTPS初探

    HTTP Client是一個客戶端HTTP協(xié)議的類庫
    1、首先是下載APACHE HTTP CLIENT相關(guān)的JAR,目前我引入到工程中的相關(guān)文件時:
    httpclient-4.0.3.jar
    httpcore-4.0.1.jar
    httpmime-4.0.3.jar
    commons-codec-1.4.jar
    commons-logging-1.1.1.jar

    JAR包之前的引用關(guān)系在README等相關(guān)說明中已有。

    2、下載并運行TOMCAT,我下載的是TOMCAT6(對應(yīng)的是JDK5),主要注意的是需要配置CATALINA_HOME這個環(huán)境變量。

    3、制作服務(wù)器端證書,下面是我一個示例:
    C:\Documents and Settings\dingjunxing>keytool -genkey -alias tomcat3 -keystore F
    :\eclipse\workspace\httpc\tomcat3.keystore
    輸入keystore密碼:  
    123456
    您的名字與姓氏是什么?
      [Unknown]:  localhost
    您的組織單位名稱是什么?
      [Unknown]:  sz
    您的組織名稱是什么?
      [Unknown]:  sz
    您所在的城市或區(qū)域名稱是什么?
      [Unknown]:  shenzhen
    您所在的州或省份名稱是什么?
      [Unknown]:  guangdong
    該單位的兩字母國家代碼是什么
      [Unknown]:  cn
    CN
    =localhost, OU=sz, O=sz, L=shenzhen, ST=guangdong, C=cn 正確嗎?
      [否]:  y
    輸入
    <tomcat3>的主密碼
            (如果和 keystore 密碼相同,按回車):  
    123456

    4、根據(jù)服務(wù)器證書導(dǎo)出客戶端證書,有兩種方式,一種為采用IE,下面提供一個利用KEY TOOL導(dǎo)出的方式:
    keytool -export -file tomcat3.cert -alias tomcat3 -keystore F:\eclipse\workspace\httpc\tomcat3.keystore
    注意:上面命令行必須進入到
    %java_home%/jre/lib/security中。

    5、將獲取到的客戶端證書導(dǎo)入:
    C:\Program Files\Java\jdk1.5.0_15\jre\lib\security>keytool -import -keystore cac
    erts 
    -file F:\eclipse\workspace\httpc\tomcat3.cert
    輸入keystore密碼:  
    123456
    Owner: CN
    =localhost, OU=sz, O=sz, L=shenzhen, ST=guangdong, C=cn
    發(fā)照者: CN
    =localhost, OU=sz, O=sz, L=shenzhen, ST=guangdong, C=cn
    序號: 4cc55438
    有效期間: Mon Oct 
    25 17:56:08 CST 2010 至: Sun Jan 23 17:56:08 CST 2011
    認證指紋:
             MD5:  E4:2E:BE:AC:A1:5D:E0:
    95:C7:95:93:BF:B3:F3:EE:5E
             SHA1: F8:9A:BB:FA:C8:C5:8A:D2:FA:
    98:A1:95:64:65:42:9A:8F:0B:4A:7D
    信任這個認證? [否]:  y
    認證已添加至keystore中

    6、TOMCAT中相關(guān)設(shè)置,主要是修改CATALINA_HOME下的conf/server.xml,在其中添加如下一個連接器:
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
                   maxThreads
    ="150" scheme="https" secure="true"
                   clientAuth
    ="false" sslProtocol="TLS" keystoreFile="F:\eclipse\workspace\httpc\tomcat3.keystore" keystorePass="123456"/>    

    7、運行相關(guān)代碼:
    package org.apache.http.examples.client;

    import java.io.File;
    import java.io.FileInputStream;
    import java.security.KeyStore;

    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    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;

    /**
     * This example demonstrates how to create secure connections with a custom SSL
     * context.
     
    */
    public class ClientCustomSSL {

        
    public static void main(String[] args) throws Exception {
            DefaultHttpClient httpclient 
    = new DefaultHttpClient();

            KeyStore trustStore 
    = KeyStore.getInstance(KeyStore.getDefaultType());
            FileInputStream instream 
    = new FileInputStream(new File("tomcat3.keystore"));
            
    try {
                trustStore.load(instream, 
    "123456".toCharArray());
            } 
    finally {
                instream.close();
            }

            SSLSocketFactory socketFactory 
    = new SSLSocketFactory(trustStore);
            Scheme sch 
    = new Scheme("https", socketFactory, 8443);
            httpclient.getConnectionManager().getSchemeRegistry().register(sch);

            HttpGet httpget 
    = new HttpGet("https://localhost:8443/docs");

            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());
            }
            
    if (entity != null) {
                entity.consumeContent();
            }

            
    // When HttpClient instance is no longer needed,
            
    // shut down the connection manager to ensure
            
    // immediate deallocation of all system resources
            httpclient.getConnectionManager().shutdown();
        }

    }
    運行結(jié)果正常,當(dāng)然也可以通過在瀏覽器中輸入“https://localhost:8443/”的方式進行訪問。

    posted on 2010-10-25 20:13 俊星 閱讀(1990) 評論(2)  編輯  收藏

    評論

    # 第五步出錯 2010-11-22 15:39 ahome

    俊星兄,我按照你的步驟一步步做下來,做到第五步出錯了。我的環(huán)境是jdk1.6.0_14和tomcat6.0.14。錯誤提示如下:
    keytool錯誤:java.io.IOException KeyStore was tampered with,or password was incorrect

    近期項目中需要用到https登錄,急切盼望您的回復(fù),我的Q:724895731,可以發(fā)到我郵箱或者直接Q我,白天一般隱身。小弟先謝謝您!  回復(fù)  更多評論   

    # 登錄網(wǎng)站 2010-11-22 16:02 ahome

    我要是實現(xiàn)的功能是這樣的,用Java程序登錄網(wǎng)站,例
    http://vark.com,登錄地址https://vark.com/session,用戶名:kate658735@qq.com,密碼:ahomevark,登錄要發(fā)送的參數(shù):session[email] kate658735@qq.com
    session[password] ahomevark
    commit Sign in
    我使用上面的代碼用post提交參數(shù),拋出異常。麻煩你介紹一下解決方案,小弟不勝感激。  回復(fù)  更多評論   


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 男女猛烈无遮掩视频免费软件| 亚洲国产美女在线观看| 亚洲爆乳无码精品AAA片蜜桃| **一级毛片免费完整视| 亚洲国产日韩一区高清在线| 最近免费中文字幕中文高清| 亚洲精品无码av人在线观看 | 亚洲狠狠成人综合网| 欧亚精品一区三区免费| 亚洲私人无码综合久久网| 日韩电影免费在线| 综合一区自拍亚洲综合图区| 大胆亚洲人体视频| 岛国岛国免费V片在线观看| 亚洲av鲁丝一区二区三区| 亚洲啪啪免费视频| 亚洲精品无码日韩国产不卡av| 日韩在线看片免费人成视频播放 | 久久性生大片免费观看性| 亚洲人成人网站色www | 国产老女人精品免费视频| 黄色a三级免费看| 日韩亚洲一区二区三区| 99无码人妻一区二区三区免费| 亚洲欧洲无码一区二区三区| 亚洲精品第一国产综合精品99| 免费视频精品一区二区三区 | 91视频国产免费| 男男gvh肉在线观看免费| 国产亚洲人成网站观看| 黄色片在线免费观看| 色视频在线观看免费| 亚洲AV区无码字幕中文色| 操美女视频免费网站| 国产成人精品免费大全| 亚洲专区一路线二| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 精品免费视在线观看| 伊人久久五月丁香综合中文亚洲| 免费大片黄手机在线观看 | 久久精品国产免费|