2017-2018-1 20155215 實驗五 通訊協議設計
1
- 在Ubuntu中完成 http://www.cnblogs.com/rocedu/p/5087623.html 中的作業
- 提交運行結果截圖
Linux下OpenSSL的安裝與使用
OpenSSL簡介
OpenSSL是一個SSL協議的開源實現,采用C語言作為開發語言,具備了跨平臺的能力,支持Unix/Linux、Windows、Mac OS等多種平臺。
OpenSSL最早的版本在1995年發布,1998年後開始由OpenSSL項目組維護和開發。當前最新的版本是1.1.0 alpha版本,完全實現了對SSLv1、SSLv2、SSLv3和TLS的支持。。目前,OpenSSL已經得到了廣泛的應用,許多類型的軟件中的安全部分都使用了OpenSSL的庫,如VOIP的OpenH323協議、Apache服務器、Linux安全模塊等等。
OpenSSL整個軟件包大概可以分成三個主要的功能部分:
- 密碼算法庫
- SSL協議庫
- 應用程序
OpenSSL源碼的目錄結構也是圍繞這三個功能部分進行規劃的。
密碼算法庫是一個強大完整的密碼算法庫,它是OpenSSL的基礎部分,也是很值得一般密碼安全技術人員研究的部分,它實現了目前大部分主流的密碼算法和標準。主要包括對稱算法、非對稱算法、散列算法、數字簽名和認證、X509數字證書標準、PKCS12、PKCS7等標準。其他兩個功能部分SSL協議和應用程序都是基於這個庫開發的。
在密碼算法庫的基礎上實現的,SSL協議部分完全實現和封裝了SSL協議的三個版本和TLS協議。使用協議庫,你完全可以建立一個SSL服務器和SSL客戶端。
應用程序是基於密碼算法庫和SSL協議庫實現的命令,熟悉OpenSSL可以從使用這些應用程序開始。應用程序覆蓋了密碼技術的應用,主要包括了各種算法的加密程序和各種類型密鑰的產生程序(如RSA、Md5、Enc等等)、證書簽發和驗證程序(如Ca、X509、Crl等)、SSL連接測試程序(如S_client和S_server等)以及其它的標準應用程序(如Pkcs12和Smime等)。
實驗步驟:
- 下載安裝包:
安裝指令
./config
make
make test
sudo make install
編寫測試代碼:
#include <stdio.h> #include <openssl/evp.h> int main(){ OpenSSL_add_all_algorithms(); return 0; }
實驗結果:
2
- 在Ubuntu中實現對實驗二中的“wc服務器”通過混合密碼系統進行防護
- 提交測試截圖
運行程序命令:
- 編譯
gcc -o server server.c -I /usr/local/ssl/include -L/usr/local/ssl/lib -lssl -lcrypto -ldl -lpthread
gcc -o telent telent.c -I /usr/local/ssl/include -L/usr/local/ssl/lib -lssl -lcrypto -ldl -lpthread
- 生產私鑰和證書
openssl genrsa -out privkey.pem 1024
openssl req -new -x509 -key privkey.pem -out CAcert.pem -days 1095
- 程序運行方式:
./server 7838 1 CAcert.pem privkey.pem
./telent 127.0.0.1 7838
實驗結果
實驗中遇到的問題
實驗的感想
2017-2018-1 20155215 實驗五 通訊協議設計