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

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

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

    隨筆-124  評論-194  文章-0  trackbacks-0
    用OpenSSL與JAVA(JSSE)通信一文中所生成的CA證書及keystore就可以在JAVA和OpenSSL之間通信了,下面以Perl代碼為例:(Perl實際使用了OpenSSL)

    下面的CLIENT端可以與前文提到的JAVA服務端通信:
    #use?strict;
    use?IO::Socket::SSL(debug4);

    my?($v_mode,?$sock,?$buf);

    if($ARGV[0]?eq?"DEBUG")?{?$IO::Socket::SSL::DEBUG?=?1;?}

    #?Check?to?make?sure?that?we?were?not?accidentally?run?in?the?wrong
    #?directory:

    unless?(-d?"certs")?{
    ????
    if?(-d?"../certs")?{
    ????
    chdir?"..";
    ????}?
    else?{
    #????die?"Please?run?this?example?from?the?IO::Socket::SSL?distribution?directory!\n";
    ????}
    }

    if(!($sock?=?IO::Socket::SSL->new(?PeerAddr?=>?'172.19.149.52',
    ???????????????????PeerPort?
    =>?'5555',
    ???????????????????Proto????
    =>?'tcp',
    ???????????????????SSL_verify_mode?
    =>?0x01,
    ???????????????????SSL_ca_file?
    =>?'mycerts/cacert.pem',
    ?????????????????)))?{
    ????
    warn?"unable?to?create?socket:?",?&IO::Socket::SSL::errstr,?"\n";
    ????
    exit(0);
    }?
    else?{
    ????
    warn?"connect?($sock).\n"?if?($IO::Socket::SSL::DEBUG);
    }

    #?check?server?cert.
    my?($subject_name,?$issuer_name,?$cipher);
    if(?ref($sock)?eq?"IO::Socket::SSL")?{
    ????
    $subject_name?=?$sock->peer_certificate("subject");
    ????
    $issuer_name?=?$sock->peer_certificate("issuer");
    ????
    $cipher?=?$sock->get_cipher();
    }
    warn?"cipher:?$cipher.\n",?"server?cert:\n",?
    ????
    "\t?'$subject_name'?\n\t?'$issuer_name'.\n\n";

    print?$sock?"Knock,?knock.\n";

    my?($buf)?=?$sock->getlines;

    $sock->close();

    print?"read:?'$buf'.\n";


    另外,也給出一個PERL的SVR端示例:
    #use?strict;
    use?IO::Socket::SSL(debug4);


    my?($sock,?$s,?$v_mode);

    if($ARGV[0]?eq?"DEBUG")?{?$IO::Socket::SSL::DEBUG?=?1;?}

    #?Check?to?make?sure?that?we?were?not?accidentally?run?in?the?wrong
    #?directory:

    unless?(-d?"certs")?{
    ????
    if?(-d?"../certs")?{
    ????
    chdir?"..";
    ????}?
    else?{
    #????die?"Please?run?this?example?from?the?IO::Socket::SSL?distribution?directory!\n";
    ????}
    }

    if(!($sock?=?IO::Socket::SSL->new(?Listen?=>?5,
    ???????????????????LocalAddr?
    =>?'10.56.28.35',
    ???????????????????LocalPort?
    =>?9000,
    ???????????????????Proto?????
    =>?'tcp',
    ???????????????????Reuse?????
    =>?1,
    ???????????????????SSL_use_cert?
    =>?1,
    ???????????????????SSL_verify_mode?
    =>?0x00,
    ???????????????????SSL_cert_file?
    =>?'mycerts/cert.pem',
    ???????????????????SSL_key_file?
    =>?'mycerts/key.pem'???????????????????
    ?????????????????))?)?{
    ????
    warn?"unable?to?create?socket:?",?&IO::Socket::SSL::errstr,?"\n";
    ????
    exit(0);
    }
    warn?"socket?created:?$sock.\n";

    while?(1)?{
    ??
    warn?"waiting?for?next?connection.\n";
    ??
    ??
    while(($s?=?$sock->accept()))?{
    ??????
    my?($peer_cert,?$subject_name,?$issuer_name,?$date,?$str);
    ??????
    ??????
    if(?!?$s?)?{
    ??????
    warn?"error:?",?$sock->errstr,?"\n";
    ??????
    next;
    ??????}
    ??????
    ??????
    warn?"connection?opened?($s).\n";
    ??????
    ??????
    if(?ref($sock)?eq?"IO::Socket::SSL")?{
    ??????
    $subject_name?=?$s->peer_certificate("subject");
    ??????
    $issuer_name?=?$s->peer_certificate("issuer");
    ??????}
    ??????
    ??????
    warn?"\t?subject:?'$subject_name'.\n";
    ??????
    warn?"\t?issuer:?'$issuer_name'.\n";
    ??
    ??????
    my?$date?=?localtime();
    ??????
    print?$s?"my?date?command?says?it's:?'$date'";
    ??????
    close($s);
    ??????
    warn?"\t?connection?closed.\n";
    ??}
    }


    $sock->close();

    warn?"loop?exited.\n";


    在PERL中寫SSL的SOCKET,要注意:
    SVR端中:
    ?????? SSL_use_cert => 1,
    ?????? SSL_verify_mode => 0x00,
    ?????? SSL_cert_file => 'mycerts/cert.pem',
    ?????? SSL_key_file => 'mycerts/key.pem'
    CLI端是:
    ?????? SSL_verify_mode => 0x01,
    ?????? SSL_ca_file => 'mycerts/cacert.pem',
    mode是0表示,不認證對端,是1表示要認證對方。
    posted on 2006-12-04 15:20 我愛佳娃 閱讀(2639) 評論(2)  編輯  收藏 所屬分類: SSL

    評論:
    # re: Perl與Java的SSL通信示例 2007-12-04 10:49 | daming
    能否提供C實現的server和client? 謝謝  回復  更多評論
      
    # re: Perl與Java的SSL通信示例 2007-12-04 18:25 | 我愛佳娃
    兄弟,了解原理后,參照OPENSSL的例子自己寫吧!  回復  更多評論
      
    主站蜘蛛池模板: 亚洲国产精品无码久久九九| 精品久久8x国产免费观看| 午夜色a大片在线观看免费| 亚洲性一级理论片在线观看| 91成人免费观看| 亚洲成年人免费网站| 96免费精品视频在线观看| 亚洲一区二区三区高清| 在线观看免费av网站| 亚洲视频网站在线观看| 18成禁人视频免费网站| 亚洲国产精品成人精品软件| 最近高清中文字幕无吗免费看| 亚洲免费视频播放| 欧美a级成人网站免费| 亚洲人成网站色7799| 国产国产成年年人免费看片| 免费观看四虎精品成人| 日本亚洲成高清一区二区三区 | xvideos亚洲永久网址| 日韩在线视频线视频免费网站| 亚洲国产综合久久天堂| a毛片全部免费播放| 亚洲精品日韩中文字幕久久久| 成人毛片18岁女人毛片免费看| 亚洲成AV人影片在线观看| 免费大片黄手机在线观看| 国产精品成人69XXX免费视频| 亚洲AV人无码综合在线观看| 毛片免费全部播放无码| 亚洲免费福利在线视频| 免费国内精品久久久久影院| 你懂的网址免费国产| ass亚洲**毛茸茸pics| 亚洲国产精品一区二区三区久久| 在线观看免费视频一区| 456亚洲人成在线播放网站| 亚洲日本va午夜中文字幕久久| 91麻豆国产免费观看| 精品国产_亚洲人成在线| 亚洲国产精品一区第二页|