為muduo新增openssl支援

2021-10-02 23:02:03 字數 465 閱讀 4394

在面試「xx出行」的時候,被問到ssl socket的實現,當時沒有做過,後來有機會接觸到這一點了,經過一段時間的學習和測試,終於將這一點做出來了。分享給大家。網上具體的資料並不多,不過好在有幾個好的demo可以參考。

一般來講,實現ssl socket的方法是使用ssl_read和ssl_write等函式,例如 

但是這種方式需要使用openssl 直接讀取socket,在某些情況下可能是不行的。

比如:一些reactor網路庫,底層直接接收資料給上層應用程式使用,難以用openssl去讀寫socket,這種情況下用bio就會方便 許多。

用bio整合openssl可以避免用openssl直接操作socket。將接收的資料和要傳送的資料放到bio中進行加密和解密,之後再進行處理。

示例**請見:  

本實現主要參考:

相關bio函式的介紹可以轉到:

openssl bio 相關參考:

用openssl為apache製作ssl證書

步驟1 生成金鑰 命令 openssl genrsa 1024 server.key 說明 這是用128位rsa演算法生成金鑰,得到server.key檔案 步驟2 生成證書請求 命令 openssl req new key server.key server.csr 說明 這是用步驟1的金鑰生成證...

為ElasticSearch新增HTTP基本認證

es的http連線沒有提供任何的許可權控制措施,一旦部署在公共網路就容易有資料洩露的風險,尤其是加上類似elasticsearch head這樣友好的前端介面,簡直讓你的資料瞬間裸奔在黑客的眼皮底下。專案上線前做十萬伏特的防護當然不現實,但至少,我們不要裸奔,穿一套比基尼吧。而做乙個簡單的http認...

為php新增擴充套件

php有很多擴充套件可以給工作帶來極大的方便,但往往是在需要的時候才發現編譯安裝的時候沒有加進入,這個時候如果重新編譯一次還是比較麻煩的,在linux中有比較好的解決辦法,那就是phpize這個工具。phpize 是屬於 php devel 中的東西,主要是設定 php 外掛程式模組的一些設定 所以...