<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)論
      

    主站蜘蛛池模板: 女人让男人免费桶爽30分钟| 日本免费xxxx| 国产亚洲精品影视在线| 亚洲综合日韩中文字幕v在线| 国产最新凸凹视频免费| 2021国产精品成人免费视频| 久久精品无码精品免费专区| 国产高潮久久免费观看| 三根一起会坏掉的好痛免费三级全黄的视频在线观看 | 91短视频在线免费观看| 最好免费观看高清在线| 免费观看又污又黄在线观看| 亚洲码欧美码一区二区三区| 亚洲中文字幕无码爆乳app| 国产精品亚洲精品观看不卡| 亚洲中文无码永久免费| 羞羞视频在线免费观看| eeuss影院www天堂免费| 久草免费福利在线| 伊人免费在线观看| 亚洲美女视频免费| 啊灬啊灬别停啊灬用力啊免费看| 亚洲 无码 在线 专区| 亚洲国产高清在线| 亚洲综合中文字幕无线码| 99亚洲乱人伦aⅴ精品| 成全动漫视频在线观看免费高清版下载 | 亚洲老熟女@TubeumTV| 亚洲色在线无码国产精品不卡| 国产精品亚洲精品爽爽| 三年片在线观看免费西瓜视频| 我的小后妈韩剧在线看免费高清版| 大学生美女毛片免费视频| 亚洲国产成人久久综合野外| 亚洲第一永久在线观看| 国产亚洲视频在线观看| 久久精品无码专区免费东京热 | 一级特黄色毛片免费看| 午夜毛片不卡高清免费| 亚洲字幕在线观看| 日本高清免费观看|