客戶端和服務端代碼框架跟上一篇一致,僅增加了ssl的證書部分用于加密通信,明文通信(ws協議)見上一篇【https://blog.csdn.net/suoxd123/article/details/148093934】
1. 證書創建
1. 安裝openssl
【官網地址】:https://slproweb.com/products/Win32OpenSSL.html
1.2 生成證書
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
證書構建參數詳解
- -x509 指定生成X.509自簽名證書。此參數會跳過生成證書請求(CSR)的步驟,直接輸出完整證書。
- -newkey rsa:4096生成一個4096位的RSA私鑰。rsa:4096表示密鑰長度,安全性更高(默認為2048位)。
- -keyout key.pem指定私鑰文件的保存路徑為key.pem。私鑰用于后續加密和證書簽名。
- -out cert.pem指定輸出證書的文件名為cert.pem。
- -days 365設置證書有效期為365天。可根據需求調整(如-days 730表示2年)。
- 其他可選參數
- -nodes:跳過私鑰加密(生成無密碼的私鑰)。
- -subj “/CN=example.com”:直接指定證書主題名稱(Common Name),避免交互式輸入
X.509 :定義了證書的標準化格式,是 TLS/SSL 安全通信的基礎,用于快速生成自簽名證書,跳過 CSR 和 CA 簽名步驟。若不使用 -x509,默認會生成 CSR 文件(需后續由 CA 簽名生成正式證書【https://letsencrypt.org/docs/glossary/】)
1.3 查看證書
openssl x509 -in cert.pem -text -noout
2. 服務端代碼
import asyncio
import websockets
import sslasync def echo(ws):async for message in ws:print