<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服務(wù)端通信:
    #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 我愛佳娃 閱讀(2633) 評論(2)  編輯  收藏 所屬分類: SSL

    評論:
    # re: Perl與Java的SSL通信示例 2007-12-04 10:49 | daming
    能否提供C實現(xiàn)的server和client? 謝謝  回復(fù)  更多評論
      
    # re: Perl與Java的SSL通信示例 2007-12-04 18:25 | 我愛佳娃
    兄弟,了解原理后,參照OPENSSL的例子自己寫吧!  回復(fù)  更多評論
      
    主站蜘蛛池模板: 小草在线看片免费人成视久网| 亚洲婷婷在线视频| 亚洲av永久无码天堂网| 操美女视频免费网站| 亚洲伊人久久大香线蕉结合| 免费影院未满十八勿进网站| 91午夜精品亚洲一区二区三区| 丁香花在线观看免费观看| 亚洲色在线无码国产精品不卡| 午夜无遮挡羞羞漫画免费| 日韩欧美亚洲中文乱码| 国产免费观看a大片的网站| 免费一级毛suv好看的国产网站| 亚洲国产精品专区在线观看| 久久久受www免费人成| 久久久久无码精品亚洲日韩| 免费观看激色视频网站bd| 一区二区亚洲精品精华液| 四虎影视免费永久在线观看| 中国一级毛片免费看视频| 4444亚洲国产成人精品| 亚洲香蕉免费有线视频| 亚洲AV色无码乱码在线观看| 激情综合色五月丁香六月亚洲| 四虎影视成人永久免费观看视频 | 国产男女猛烈无遮挡免费网站| 狠狠入ady亚洲精品| 亚洲真人无码永久在线| 久久久久久毛片免费播放| 亚洲欧美日韩自偷自拍| 自拍偷自拍亚洲精品情侣| 国产成人精品免费视| 羞羞漫画页面免费入口欢迎你| 亚洲春色在线视频| 免费被黄网站在观看| 九九美女网站免费| 精品国产亚洲第一区二区三区| 亚洲AV无码专区国产乱码4SE | 一级做α爱过程免费视频| 亚洲视频在线免费播放| 亚洲av无码成人精品区在线播放|