1. 程式人生 > >2017-2018-1 20155215 實驗五 通訊協議設計

2017-2018-1 20155215 實驗五 通訊協議設計

完成 版本 html onf ron 分享圖片 apache day es2017

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 實驗五 通訊協議設計