<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的例子自己寫吧!  回復  更多評論
      
    主站蜘蛛池模板: 亚洲精华液一二三产区| 亚洲av无码一区二区三区观看| 免费精品国自产拍在线播放 | 亚洲卡一卡2卡三卡4卡无卡三 | 亚洲午夜精品一区二区公牛电影院| 久久久久久一品道精品免费看 | 在线综合亚洲欧洲综合网站| AA免费观看的1000部电影| 亚洲av产在线精品亚洲第一站| 在线v片免费观看视频| 亚洲私人无码综合久久网| 日本免费人成视频播放| 美女免费精品高清毛片在线视| 亚洲国产日韩成人综合天堂| 香蕉免费看一区二区三区| 亚洲av中文无码乱人伦在线咪咕 | 性生交片免费无码看人| 浮力影院第一页小视频国产在线观看免费| 久久久亚洲AV波多野结衣| 国产在线观看免费观看不卡| 亚洲日韩中文字幕无码一区| 免费看小12萝裸体视频国产| 一级毛片免费播放试看60分钟| 青青草原亚洲视频| 99在线观看免费视频| 亚洲一区二区三区丝袜| 国产伦精品一区二区三区免费下载| 一区二区免费国产在线观看| 国产成人精品日本亚洲网站| 噼里啪啦免费观看高清动漫4| 亚洲欧美成人综合久久久| 亚洲精品无码99在线观看 | 最新亚洲精品国偷自产在线| 亚洲&#228;v永久无码精品天堂久久 | 一级毛片在线完整免费观看| 亚洲av福利无码无一区二区 | 免费看国产精品3a黄的视频| www免费黄色网| 亚洲国产高清视频在线观看| 亚洲日韩中文字幕日韩在线| 日韩视频在线观看免费|