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程式設計。在實驗中,我們小組三個人相互配合,遇到問題一起解決,雖然也犯了低階錯誤,但是最後實驗的成功進行仍然體現了團隊合作的優勢。而且學姐的部落格也給我們指引了道路,十分詳細。