• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            woomsg

            在路上

            openssl使用(補)

            1. 使用OpenSSL內置的數據結構BIO可以方便的創建安全和非安全鏈接,
            在IBM Web上的"使用OpenSSL進行安全編程"系列的三篇文章是個不錯的入門:
            http://www.ibm.com/developerworks/cn/linux/l-openssl.html

            http://www.ibm.com/developerworks/cn/linux/l-openssl2.html
            http://www.ibm.com/developerworks/cn/linux/l-openssl3.html

            安全鏈接的簡要概述:
            安全連接要求在連接建立后進行握手。在握手過程中,服務器向客戶機發送一個證書, 然后,客戶機根據一組可信任證書來核實該證書。它還將檢查證書,以確保它沒有過期。要 檢驗證書是可信任的,需要在連接建立之前提前加載一個可信任證書庫。
            只有在服務器發出請求時,客戶機才會向服務器發送一個證書。該過程叫做客戶機認證。使用證書, 在客戶機和服務器之間傳遞密碼參數,以建立安全連接。盡管握手是在建立連接之后才進行的,但是客戶機或服務器可以在任何時刻請求進行一次新的握手。

            附帶兩個Demo:分別是使用BIO建立普通的socket鏈接和ssl鏈接, 并下載google得主頁.

             1#include "openssl/ssl.h"
             2#include "openssl/bio.h"
             3#include "openssl/err.h"
             4
             5
             6#include <iostream>
             7#include <winsock2.h>
             8
             9
            10#pragma comment( lib, "ws2_32.lib" )
            11#pragma comment( lib, "libeay32.lib" )
            12#pragma comment( lib, "ssleay32.lib" )
            13
            14
            15int main( int argc, char* argv[] ) {
            16  ////////////
            17  // 初始化 //
            18  ////////////
            19  BIO* bio;
            20  int ret;
            21  char* request = "GET / HTTP/1.1\x0D\x0AHost: www.google.com\x0D\x0A\x43onnection: Close\x0D\x0A\x0D\x0A";
            22  char buf[1024];
            23
            24  ERR_load_BIO_strings();
            25  SSL_load_error_strings();
            26  SSLeay_add_ssl_algorithms();
            27
            28
            29  //////////////
            30  // 建立鏈接 //
            31  //////////////
            32
            33  bio = BIO_new_connect("www.google.com:80");
            34  if(bio == NULL) {
            35    std::cout<<"BIO_new_connect error."<<std::endl;
            36    return -1;
            37  }

            38
            39  if(BIO_do_connect(bio) <= 0{
            40    std::cout<<"BIO_new_connect error."<<std::endl;
            41    BIO_free_all(bio);
            42    return -1;
            43  }

            44
            45  // 發送請求
            46  BIO_write(bio, request, strlen(request));
            47
            48  // 接收數據
            49  for(;;) {
            50    ret = BIO_read(bio, buf, 1023);
            51    if(ret <= 0{
            52      break;
            53    }

            54    buf[ret] = 0;
            55    std::cout<<buf<<std::endl;
            56  }

            57
            58  BIO_free_all(bio);
            59  return 0;
            60}

             1#include "openssl/ssl.h"
             2#include "openssl/bio.h"
             3#include "openssl/err.h"
             4
             5
             6#include <iostream>
             7#include <winsock2.h>
             8
             9
            10#pragma comment( lib, "ws2_32.lib" )
            11#pragma comment( lib, "libeay32.lib" )
            12#pragma comment( lib, "ssleay32.lib" )
            13
            14// 我們默認對服務器的證書都是可信的,沒有進行服務器證書的驗證.
            15int main( int argc, char* argv[] ) {
            16  ////////////
            17  // 初始化 //
            18  ////////////
            19  SSL* ssl;
            20  SSL_CTX* ctx;
            21
            22  BIO* bio;
            23  int ret;
            24  char* request = "GET / HTTP/1.1\x0D\x0AHost: www.google.com\x0D\x0A\x43onnection: Close\x0D\x0A\x0D\x0A";
            25  char buf[1024];
            26
            27  ERR_load_BIO_strings();
            28  SSL_load_error_strings();
            29  SSLeay_add_ssl_algorithms();
            30
            31  ctx = SSL_CTX_new ( SSLv23_client_method() );
            32  if (!ctx) {
            33    ERR_print_errors_fp(stderr);
            34    std::cout<<"SSL_CTX_new error."<<std::endl;
            35    return -1;
            36  }

            37
            38  //////////////
            39  // 建立鏈接 //
            40  //////////////
            41  bio = BIO_new_ssl_connect(ctx);
            42  BIO_get_ssl(bio, & ssl);
            43  SSL_set_mode(ssl, SSL_MODE_AUTO_RETRY);
            44  BIO_set_conn_hostname(bio, "www.google.com:443");
            45  if(BIO_do_connect(bio) <= 0{
            46    std::cout<<"BIO_do_connect error."<<std::endl;
            47    return -1;
            48  }

            49  
            50
            51  // 發送請求
            52  BIO_write(bio, request, strlen(request));
            53
            54  // 接收數據
            55  for(;;) {
            56    ret = BIO_read(bio, buf, 1023);
            57    if(ret <= 0{
            58      break;
            59    }

            60    buf[ret] = 0;
            61    std::cout<<buf<<std::endl;
            62  }

            63
            64  BIO_free_all(bio);
            65  SSL_CTX_free(ctx);
            66  return 0;
            67}

            68

            posted on 2008-10-22 10:48 ysong.lee 閱讀(2815) 評論(10)  編輯 收藏 引用

            Feedback

            # re: openssl使用(補) 2009-03-25 09:54 PGG

            如何使用DTLS?  回復  更多評論   

            # re: openssl使用(補) 2010-06-15 03:44 ReillyMelva

            When you are in the corner and have no cash to move out from that point, you would need to receive the <a href="http://lowest-rate-loans.com/topics/credit-loans">credit loans</a>. Just because that should aid you unquestionably. I get commercial loan every single year and feel great just because of it.   回復  更多評論   

            # re: openssl使用(補) 2010-09-28 21:55 essay writer

            Thanks a lot that you created the good enough outcome associated with this topic. Though, to find the professional essay writing service, all of us must have some knowledge about custom write.   回復  更多評論   

            # re: openssl使用(補) 2011-09-30 14:14 loans

            Following my own analysis, billions of persons on our planet get the business loans at good banks. Thus, there's great possibilities to find a student loan in any country.   回復  更多評論   

            # re: openssl使用(補) 2013-04-10 02:34 essay writing service review

            Have no clue which firm to choose to get aid from? Look through QualityEssays testimonials best-writing-services.com, and take a right choice.  回復  更多評論   

            # re: openssl使用(補) 2013-04-10 13:56 resume writing samples

            Can’t complete remarkable CV yourself? Paper writing agencies accessible online will help you out with pleasure whenever you desire to try buying resume online.  回復  更多評論   

            久久成人精品视频| 亚洲国产精品嫩草影院久久| 亚洲综合日韩久久成人AV| 日韩久久久久久中文人妻| 色综合色天天久久婷婷基地| 久久精品国产99久久香蕉| 亚洲国产精品无码久久久不卡| 欧美精品一区二区精品久久| 热综合一本伊人久久精品| 久久精品国产99久久久| 久久亚洲精品国产精品婷婷| 久久91精品久久91综合| 久久国产劲爆AV内射—百度| segui久久国产精品| 久久99国产综合精品| 久久国产亚洲精品| 国产亚洲精午夜久久久久久| 国产情侣久久久久aⅴ免费| 精品久久亚洲中文无码| 久久久艹| 国产2021久久精品| 996久久国产精品线观看| 亚洲国产精品一区二区久久hs| 欧美亚洲日本久久精品| 久久99精品国产麻豆不卡| 久久国产亚洲精品麻豆| 97久久久久人妻精品专区| 麻豆成人久久精品二区三区免费| 一本大道久久香蕉成人网| 一本色道久久综合狠狠躁篇 | 色老头网站久久网| 精品久久人人做人人爽综合| 亚洲国产精品久久久久久| 精品久久久久久国产| 91视频国产91久久久| 国产精品久久久久久久| 狠狠狠色丁香婷婷综合久久五月| 国产精品久久久久久久| 99久久99久久精品国产片| 久久国产视频网| 久久久久波多野结衣高潮|