<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 我愛佳娃 閱讀(2631) 評論(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的例子自己寫吧!  回復  更多評論
      
    主站蜘蛛池模板: 人妻无码久久一区二区三区免费| 亚洲人成色777777老人头| 男人j进女人p免费视频| 免费A级毛片无码免费视| 亚洲最新在线视频| 中文字幕无码一区二区免费| 在线观看亚洲成人| 国产裸体美女永久免费无遮挡| 亚洲精品视频在线看| 黄色a级片免费看| 亚洲欧洲日产国码一级毛片| 一级毛片免费不卡| 亚洲精品无码久久一线| 华人在线精品免费观看| 久久久久亚洲AV成人片| 无人在线直播免费观看| 亚洲色中文字幕在线播放| 国产免费资源高清小视频在线观看| 亚洲国产成人AV网站| 亚洲精品无码AV中文字幕电影网站| 成人免费视频一区二区| 亚洲人色婷婷成人网站在线观看| 免费av片在线观看网站| 亚洲欧洲在线播放| 免费观看的毛片手机视频| 免费看黄福利app导航看一下黄色录像| 久久精品a一国产成人免费网站| 久久亚洲欧美国产精品| 亚洲日韩国产成网在线观看| 91av免费在线视频| 亚洲2022国产成人精品无码区 | 狠狠综合久久综合88亚洲| 美女被爆羞羞网站免费| 国产精品亚洲美女久久久| 人人揉揉香蕉大免费不卡| 国产精品高清视亚洲精品| 午夜亚洲国产成人不卡在线| 一个人免费视频观看在线www| 在线综合亚洲中文精品| 国产亚洲av人片在线观看| 精品香蕉在线观看免费|