c语言ssl通信,利用 OpenSSL 的 C/S 安全通信程序设计
前言
本項目是《網絡安全協議》的實驗二 “利用 OpenSSL 的 C/S 安全通信程序設計” 的項目。
本項目是 基于 Linux 平臺、 gcc 編譯、 OpenSSL 依賴庫環境 下進行編寫的。
所以可能會出現在 Windows 平臺上無法編譯的情況。
開發環境
函數說明
項目程序
驗收后發布。
編譯、運行
解壓
解壓項目 zip 包。
unzip openssl-c-s.zip
進入解壓的項目目錄:
cd openssl-c-s/
修改代碼中服務端 IP
修改 src/server.c 和 src/client.c 中的參數:
char *ip_server = "172.17.0.3";
int port_server = 5223;
ip_server :初始為 172.17.0.3 ,應修改為要執行 server 服務端可執行文件的 Linux 主機的 IP 。
port_server :可隨意設置為沒有占用且開放的端口。
注意:兩個文件都要修改,且相同。
編譯
在項目目錄 openssl-c-s/ 下,執行:
make
即可編譯所需文件。
恢復未編譯之前的初始狀況,刪除所有編譯生成的文件:
make clean
運行
需要打開兩個 Linux 主機,每個主機都要打開一個終端控制臺,且都要進入目錄 openssl-c-s/ 。
也可以使用 docker 創建運行兩個容器來執行。
docker 容器列表 :
服務端 opensll-s IP :172.17.0.3 。
客戶端 opensll-c IP :172.17.0.4 。
將項目復制到這兩個容器中。
容器中可以看到:
opensll-s 容器先執行服務端可執行文件:
./server
opensll-c 容器先執行客戶端可執行文件:
./client
這時服務連通,SSL 連接建立,可以通信。
更多功能說明、截圖:基礎功能實現和擴展 。
項目結構
樹狀圖
共有 4 個文件夾,12 個文件。
$ tree openssl-c-s/
openssl-c-s/
├── README.md
├── bin
│?? ├── client.out
│?? └── server.out
├── certificate
│?? ├── serverCert.cer
│?? └── serverKey.pem
├── client -> bin/client.out
├── include
│?? └── get_ip_addr.h
├── makefile
├── server -> bin/server.out
└── src
├── client.c
├── get_ip_addr.c
└── server.c
4 directories, 12 files
結構說明
文件夾
bin/ : 包含最終結果的可執行文件。
certificate/ :包含服務器證書和私鑰。
include/ : 包含使用到的自定義頭文件。
src/ : 包含所有的 .c 源文件。
文件
主目錄下:
makefile : 描述了整個項目的編譯、鏈接等規則。
RAEDME.md :使用 Markdown 語法的說明文件。
make 命令:編譯、鏈接目標文件,生成 bin/server.out 到 server 的軟連接等等。
- make clean 命令:使用 clean 偽目標,執行定義的刪除相關文件指令,。
server :make 生成的指向 bin/server.out 的軟鏈接文件。
client :make 生成的指向 bin/client.out 的軟鏈接文件。
bin/ 目錄下:
bin/client.out :項目客戶端的可執行文件。
bin/server.out :項目服務器的可執行文件。
certificate/ 目錄下:
serverCert.cer :openssl 命令生成的服務器證書。
serverKey.pem :openssl 命令生成的服務器密鑰。
include/ 目錄下:
get_ip_addr.h : 對 src/get_ip_addr.c 中函數的聲明、暴露接口給外部使用。
src/ 目錄下:
client.c :項目客戶端的 .c 源文件。
get_ip_addr.c :項目核查服務端 IP 的 .c 源文件。
server.c :項目服務端的 .c 源文件。
基礎功能實現和擴展
實驗要求:編程實現基于 OpenSSL 的客戶端、服務器安全通信的程序。
擴展功能 1:添加說明。
對于關鍵的步驟,添加了說明,比如監聽端口或 SSL 握手請求等等。
擴展功能 2:循環輸入,不輸入 quit 不終止。
擴展功能 3:客戶端聊天中輸入 quit ,結束聊天,但服務器等待新的客戶端請求。
擴展功能 4:服務器等待新的客戶端請求,并與之連接。
擴展功能 5:服務器聊天中輸入 quit ,客戶端程序同時結束
原文:https://www.cnblogs.com/Yogile/p/12924034.html
總結
以上是生活随笔為你收集整理的c语言ssl通信,利用 OpenSSL 的 C/S 安全通信程序设计的全部內容,希望文章能夠幫你解決所遇到的問題。