<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的例子自己寫吧!  回復  更多評論
      
    主站蜘蛛池模板: 免费一级毛片在线播放| 成人免费福利视频| 亚洲国产成人精品女人久久久 | eeuss免费天堂影院| 亚洲av无码乱码在线观看野外 | 亚洲国产精品一区二区九九| 豆国产96在线|亚洲| 国产乱人免费视频| 老司机福利在线免费观看| 免费A级毛片无码A| 一级黄色免费网站| 亚洲欧洲∨国产一区二区三区| 中文在线观看免费网站| 久久亚洲精品无码| 免费观看激色视频网站(性色)| 激情亚洲一区国产精品| 麻豆国产VA免费精品高清在线 | a视频在线观看免费| 在线观看亚洲人成网站| 成年在线观看网站免费| 国产天堂亚洲国产碰碰| 国产亚洲精品国产| 国产卡二卡三卡四卡免费网址| 亚洲色偷偷偷综合网| 亚洲无线一二三四区手机| 亚欧免费一级毛片| 国产精品高清视亚洲一区二区| 四虎永久成人免费影院域名| 久久免费线看线看| 久久精品亚洲AV久久久无码| 又黄又爽一线毛片免费观看| 在线观看特色大片免费网站| 亚洲资源最新版在线观看| 亚洲国产成人精品91久久久| 亚洲黄色片免费看| 国产亚洲综合一区二区三区| 久久国产亚洲精品无码| 日本免费一本天堂在线| 午夜不卡久久精品无码免费| 国产亚洲欧美在线观看| 西西人体44rt高清亚洲 |