openssl框架閒談–SSL實現
BIO 和EVP的一個應用就是SSL,沒有SSL這個應用,BIO或者EVP只不過是一些底層的支撐介面,沒有任何的現實意義,正是SSL使用了BIO和EVP 的機制提供了一個已經成型的安全套接字的實現策略。其實想象一下,安全套接字有兩層含義,一層就是安全,這個由EVP介面實現了,另外一層含義就是套接 字,也就是說它必須是一個套接字,必須在操作的網路協議棧上進行IO,這一層含義是在BIO介面體現的,這個意義上,SSL正是通過組合BIO和EVP來 實現安全套接字的,BIO除了提供底層的抽象介面之外並不和SSL存在別的方面的耦合,因此BIO可以單獨被使用,同樣的,EVP也是可以單獨被使用的。
不過,繼續我們美妙的旅程之前首先要說的一點是,SSL本身就是一個BIO型別,並且是屬於過濾型別的,在它的下層必須有一個socket型別的源/目的型別的BIO,在openssl中自帶的sconnect例項中體現了這一點,建立過程如下:
SSL_load_error_strings();
OpenSSL_add_ssl_algorithms();
ssl_ctx=SSL_CTX_new(SSLv23_client_method());
ssl=SSL_new(ssl_ctx);
SSL_set_connect_state(ssl);
ssl_bio=BIO_new(BIO_f_ssl());
BIO_set_ssl(ssl_bio,ssl,BIO_CLOSE);
out=BIO_new(BIO_s_connect());
BIO_set_conn_hostname(out,host);
BIO_set_nbio(out,1);
不過,繼續我們美妙的旅程之前首先要說的一點是,SSL本身就是一個BIO型別,並且是屬於過濾型別的,在它的下層必須有一個socket型別的源/目的型別的BIO,在openssl中自帶的sconnect例項中體現了這一點,建立過程如下:
SSL_load_error_strings();
OpenSSL_add_ssl_algorithms();
ssl_ctx=SSL_CTX_new(SSLv23_client_method());
ssl=SSL_new(ssl_ctx);
SSL_set_connect_state(ssl);
ssl_bio=BIO_new(BIO_f_ssl());
BIO_set_ssl(ssl_bio,ssl,BIO_CLOSE);
out=BIO_new(BIO_s_connect());
BIO_set_conn_hostname(out,host);
BIO_set_nbio(out,1);
out=BIO_push(ssl_bio,out);
本文轉自 dog250 51CTO部落格,原文連結:http://blog.51cto.com/dog250/1273626
相關文章
- Composer The openssl extension is required for SSL/TLS protectionUITLS
- 使用OpenSSL生成自簽名SSL證書
- 20.7 OpenSSL 套接字SSL加密傳輸加密
- 遊戲與現實的經濟——閒談氪金與服務(一)遊戲
- GMTC-閒魚Flutter實踐效果訪談Flutter
- openssl建立證書,非常詳細配置ssl+apacheApache
- .NetCore+OpenSSL實現HttpsNetCoreHTTP
- 使用OpenSSL替代MCrypt實現AES加解密解密
- 從OpenSSL漏洞談及資料安全
- 簡易實現 HTTPS (一) 自動實現 sslHTTP
- 使用github oauth 出現 OpenSSL::SSL::SSLError - SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 解決GithubOAuthError
- Windows系統編譯libhv帶SSL,開啟WITH_OPENSSLWindows編譯
- 談談fork/join實現原理
- 閒談谷歌中國ICP到期薦谷歌
- 【閒談】如何統計字串中出現最多的字母與個數字串
- Netty 實現SSL安全連線(wss://)Netty
- Linux下實現 OpenSSL 簡單加密與解密字串Linux加密解密字串
- 基於OpenSSL的HTTPS通訊C++實現HTTPC++
- OpenSSL“大管家”Steve Marquess:“心臟出血”重創後的OpenSSL(圖靈訪談)圖靈
- Flutter仿閒魚底部導航欄實現Flutter
- 羽夏閒談——除錯控制檯除錯
- OpenSSL: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failurErrorServerAI
- 來談談限流-從概念到實現
- AT指令框架的實現框架
- 實現springSecurity框架SpringGse框架
- 淺談框架框架
- 淺談react diff實現React
- 閒談團隊的程式碼質量
- 羽夏閒談——我與計算機計算機
- 談談Hadoop MapReduce和Spark MR實現HadoopSpark
- 談談 Promise 以及實現 Fetch 的思路Promise
- 前端談談實現五子棋前端
- 談談限流演算法,以及Redisson實現演算法Redis
- 大家談談struts的分頁實現吧
- nginx配置SSL證書實現https服務NginxHTTP
- nginx配置ssl實現https訪問 小白文NginxHTTP
- 在IIS下部署SSL證書實現HTTPSHTTP
- 開源運動是否走到盡頭?--談談怎樣看待OpenSSL心臟出血