1. 程式人生 > >2018-2019-1 20165226_20165310_20165315 實驗五 通訊協議設計

2018-2019-1 20165226_20165310_20165315 實驗五 通訊協議設計

2018-2019-1 20165226_20165310_20165315 實驗五 通訊協議設計

目錄


一、任務一 Linux下OpenSSL的安裝與使用
二、任務二
三、實驗過程中遇到的問題及解決
四、實驗感想

一、任務一 Linux下OpenSSL的安裝與使用


(一)OpenSSL的安裝

  • 環境
    OpenSSL最新版本下載參見[http://www.openssl.org/source/]

  • 安裝過程
    Linux下的應用大多可以直接使用,也可以獲取原始碼自己進行編譯、安裝,使用原始碼安裝的過程一般是:
configure
make
make install
  • OpenSSL的安裝也是這樣。首先解壓原始碼:tar xzvf openssl-1.1.0-pre1.tar.gz
  • 然後進入原始碼目錄:cd openssl-1.1.0-pre1
  • 然後使用下列命令編譯安裝:
./configure
make
sudo make install

(二)OpenSSL的使用

  • OpenSSL應用程式
    通過man openssl檢視幫助文件。

  • OpenSSL密碼演算法庫
    編寫一個測試程式碼test_openssl.c:
#include <stdio.h>
#include <openssl/evp.h>
int main(){
    OpenSSL_add_all_algorithms();    
    return 0;
}
  • 然後用下面命令編譯:
gcc -o to test_openssl.c -I /usr/local/ssl/inlcude -L /usr/local/ssl/lib -ldl -lpthread
  • 執行./to;echo $?,結果列印0.

(三)結果如圖

返回目錄

二、任務二


在Ubuntu中實現對實驗二中的“wc伺服器”通過混合密碼系統進行防護

實驗過程:

  • 編譯

gcc -o server server.c -I /usr/local/ssl/include -L/usr/local/ssl/lib -lssl -lcrypto -ldl -lpthread

gcc -o client client.c -I /usr/local/ssl/include -L/usr/local/ssl/lib -lssl -lcrypto -ldl -lpthread

  • 建立私鑰和證書

openssl genrsa -out PK.pem 1024

openssl req -new -x509 -key PK.pem -out CA.pem -days 1095

  • 執行

./server 7838 1 CA.pem PK.pem

./client 127.0.0.1 7838

返回目錄

三、實驗過程中遇到的問題及解決


  • 問題一:在編譯過程中遇到openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory錯誤

  • 解決過程:
    這是由於openssl庫的位置不正確造成的。需要執行如下指令:

ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1

ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

詳見大神的部落格中的解決方法。

  • 問題二:在編譯過程中遇到如下報錯,且執行時報錯找不到執行檔案:

  • 解決過程:
    經過檢查命令,發現原來是編譯時忘記給執行檔案命名,導致執行時找不到執行檔案

返回目錄

四、實驗感想


這次實驗比較簡單,主要是要按照實驗步驟,一步步深入理解Openssl程式設計。在實驗中,我們小組三個人相互配合,遇到問題一起解決,雖然也犯了低階錯誤,但是最後實驗的成功進行仍然體現了團隊合作的優勢。而且學姐的部落格也給我們指引了道路,十分詳細。

返回目錄