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

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

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

    Terry.Li-彬

    虛其心,可解天下之問(wèn);專其心,可治天下之學(xué);靜其心,可悟天下之理;恒其心,可成天下之業(yè)。

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      143 隨筆 :: 344 文章 :: 130 評(píng)論 :: 0 Trackbacks
    /********************************************************************
     * 項(xiàng)目名稱    :rochoc   <p>
     * 包名稱      :rochoc.net.security <p>
     * 文件名稱    :SSLClient   <p>
     * 編寫者      :LuckyStar    <p>
     * 編寫日期    :2008-2-13    <p>
     * 程序功能(類)描述 :安全通訊的客戶端       <p>
     *
     * 程序變更日期   :
     * 變更作者    :
     * 變更說(shuō)明    :
    *******************************************************************
    */
    package rochoc.net.security;

    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.security.KeyStore;
    import java.security.SecureRandom;

    import javax.net.ssl.KeyManagerFactory;
    import javax.net.ssl.SSLContext;
    import javax.net.ssl.SSLSocket;
    import javax.net.ssl.SSLSocketFactory;
    import javax.net.ssl.TrustManagerFactory;

    /**
     * 類名:SSLClient  <p>
     * 類描述: 安全通訊的客戶端<p>
     * 編寫者 :luoc<p>
     * 編寫日期 :2005-6-30<p>
     * 主要public成員變量:<p>
     * 主要public方法:   <p>
     *
    */

    public class SSLClient
    {
        
    /**
         *構(gòu)造函數(shù)說(shuō)明:       <p>
         *參數(shù)說(shuō)明:   <p>
        *
    */
        
    public SSLClient()
        {
            init();
        }
       
        
    /**
        * 方法名稱:init<p>
        * 方法功能:初始化客戶端Socket            <p>
        * 參數(shù)說(shuō)明: <p>
        * 返回:void <p>
        * 作者:luoc
        * 日期:2005-6-30
        *
    */
        
    public void init()
        {
            
    //server socket's ip and port
            String host="localhost";
            
    int port=2001;
            
    //keystore path and password
            String keyf="..\\key\\mystore";
            String trustf
    ="..\\key\\srvtrust";
            String pass
    ="123456";
            
    //set up a connection
            SSLSocketFactory ssf=null;
            
    try
            {
                
    //init context
                SSLContext ctx=SSLContext.getInstance("TLS");           
                KeyManagerFactory kmf
    =KeyManagerFactory.getInstance("SunX509");
                TrustManagerFactory tmf
    =TrustManagerFactory.getInstance("SunX509");           
                KeyStore ks
    =KeyStore.getInstance("JKS");
                KeyStore tks
    =KeyStore.getInstance("JKS");
                
    //load keystore
                ks.load(new FileInputStream(keyf),pass.toCharArray());
                tks.load(
    new FileInputStream(trustf),pass.toCharArray());
                kmf.init(ks,pass.toCharArray());
                tmf.init(tks);
                ctx.init(kmf.getKeyManagers(),tmf.getTrustManagers(),
    new SecureRandom());
                System.out.println(
    "load keystore success.");
                ssf
    =ctx.getSocketFactory();
                
    //create socket
                socket=(SSLSocket)ssf.createSocket(host,port);
                System.out.println(
    "create socket success.");
                
    //handshake
                socket.startHandshake();
                System.out.println(
    "handshake success.");
            }
    catch(Exception e)
            {
                System.out.println(
    "establish connection error.");
                e.printStackTrace();
                
    return;
            }
           
        }
       
        
    /**
        * 方法名稱:sendMessage<p>
        * 方法功能:發(fā)送信息            <p>
        * 參數(shù)說(shuō)明:
    @param msg <p>
        * 返回:void <p>
        * 作者:luoc
        * 日期:2005-6-30
        *
    */
        
    public void sendMessage(String msg)
        {
            
    try
            {
                OutputStream out
    =socket.getOutputStream();
                InputStream in
    =socket.getInputStream();
                
    //send message
                System.out.println("send message:["+msg+"]");
                out.write(msg.getBytes());
                out.write(TranTool.DATA_END);
                out.flush();
                
    //receive message
                byte [] buff=new byte[1024];
                
    int len=0;
                System.out.println(
    "recv len:"+(len=in.read(buff)));
                System.out.println(
    "receive from srv:[");           
                System.out.print(
    new String(buff,0,len));           
                System.out.println(
    "] receive end.");
            }
    catch(IOException e)
            {
                e.printStackTrace();
            }
    finally
            {
                
    try
                {
                    socket.close();
                }
    catch(Exception e)
                {
                    e.printStackTrace();
                }
            }
        }
        
    /*全局變量*/
        SSLSocket socket
    =null;
       
        
    //測(cè)試函數(shù)
        public static void main(String args[])
        {
            SSLClient sc
    =new SSLClient();
            String msg
    ="Hello SSL Server.";
            
    if(args.length==1)
            {
                msg
    =args[0];
            }
    else
            {
                System.out.println(
    "Useage:Please input the message you want to send.");
            }
            sc.sendMessage(msg);
        }
    }
    posted on 2008-02-13 22:05 禮物 閱讀(2335) 評(píng)論(3)  編輯  收藏 所屬分類: CA

    評(píng)論

    # re: JAVA中SSL證書認(rèn)證通訊-Client 2008-07-09 16:20 JessonWoo
    請(qǐng)問(wèn),能用這個(gè)程序查看服務(wù)器的證書信息嗎?  回復(fù)  更多評(píng)論
      

    # re: JAVA中SSL證書認(rèn)證通訊-Client 2008-07-09 18:18 JessonWoo
    請(qǐng)問(wèn),如何建立一個(gè)SSLClient,以實(shí)現(xiàn)和指定的服務(wù)器SSL連接,發(fā)送請(qǐng)求client_Hello,以使得服務(wù)器返回一個(gè)server_Hello和一個(gè)certificate(即handshake的第一階段)。
    盼不吝賜教!
      回復(fù)  更多評(píng)論
      

    # re: JAVA中SSL證書認(rèn)證通訊-Client 2009-03-19 11:00 liyulin
    TranTool 這個(gè)類在哪個(gè)包中呀  回復(fù)  更多評(píng)論
      

    主站蜘蛛池模板: 亚洲成AV人片在线观看无码| 亚洲成人福利网站| 亚洲AV无码精品色午夜果冻不卡| 亚洲最大在线观看| 最近免费中文在线视频| 国产精品免费看香蕉| 亚洲国产精品成人精品软件 | 91亚洲导航深夜福利| 国产亚洲精品欧洲在线观看| 久久免费线看线看| 亚洲国产V高清在线观看| 亚洲日韩AV一区二区三区中文 | 中国china体内裑精亚洲日本| 免费精品久久天干天干| 国产大片91精品免费观看男同 | 亚洲福利秒拍一区二区| 两个人看的www免费高清| 全黄性性激高免费视频| 亚洲日本va一区二区三区| 国产性生交xxxxx免费| 国产精品无码免费专区午夜| 日韩亚洲精品福利| 亚洲av无码片vr一区二区三区| 精品免费人成视频app| 亚洲国产精品线在线观看| 99久久99这里只有免费的精品| 午夜亚洲av永久无码精品| 精品免费久久久久国产一区 | 黄色a级片免费看| 国产小视频在线观看免费| 成在人线av无码免费高潮喷水 | 亚洲精品成人久久| 永久免费观看的毛片的网站| 亚洲AV无码精品蜜桃| 九九精品免费视频| 中文日韩亚洲欧美制服| 亚洲自偷自偷图片| 嫩草成人永久免费观看| 久久久综合亚洲色一区二区三区| 韩日电影在线播放免费版| 亚洲丝袜中文字幕|