<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協議的類庫
    1、首先是下載APACHE HTTP CLIENT相關的JAR,目前我引入到工程中的相關文件時:
    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包之前的引用關系在README等相關說明中已有。

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

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

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

    5、將獲取到的客戶端證書導入:
    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
    發照者: 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中相關設置,主要是修改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、運行相關代碼:
    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();
        }

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

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

    評論

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

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

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

    # 登錄網站 2010-11-22 16:02 ahome

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


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


    網站導航:
     
    主站蜘蛛池模板: 精品国产免费观看久久久| 香蕉97超级碰碰碰免费公| 深夜国产福利99亚洲视频| 亚洲成av人无码亚洲成av人| 日韩在线免费视频| 亚洲videos| 精品剧情v国产在免费线观看| 亚洲精品无码久久久久YW| 成人人免费夜夜视频观看| 亚洲欧美成人一区二区三区| 成年美女黄网站色大免费视频| 亚洲男人天堂2022| 在线免费视频一区二区| 亚洲hairy多毛pics大全| 免费人成在线观看网站品爱网日本| 在线观看国产一区亚洲bd| 亚洲国产成人五月综合网 | 成人午夜免费福利| 亚洲色偷偷偷综合网| 日本一区免费电影| 一级做a爰黑人又硬又粗免费看51社区国产精品视 | 久久丫精品国产亚洲av| 国产2021精品视频免费播放| 亚洲国产日产无码精品| 麻豆国产VA免费精品高清在线| 精品国产日韩亚洲一区91| JLZZJLZZ亚洲乱熟无码| 午夜精品射精入后重之免费观看| 亚洲国产精品无码久久久| 永久免费AV无码网站在线观看| 成年大片免费高清在线看黄| 久久夜色精品国产亚洲| 免费毛片a在线观看67194| 国产精品亚洲色婷婷99久久精品| 亚洲热线99精品视频| 2021久久精品免费观看| 美女被爆羞羞网站免费| 亚洲国产精品高清久久久| 免费观看的毛片大全| 一级毛片a免费播放王色| 亚洲精品在线播放|