項目中採用 wss 來建立的前後端連接, 但是並沒有用到認證的證書, 所以自己用 openssl 生成了私鑰, 自簽名證書來使用:
這裏就不再贅述 Wss 連接過程, 直接上手操作:
1. 生成私鑰, 證書:
請查看: 使用 openssl 安裝和生成證書 - 書源 - 博客園 (cnblogs.com)
2. rust 服務端:
將生成的 server.crt 和 server.key 放到 d:\\User\\Desktop\\wss\\openssl 目錄下
依賴:
[dependencies]
rustls = "0.19.0"
tokio-rustls = "0.22.0"
tokio = { version = "1", features = ["full"] }
tokio-tungstenite = "0.20"
futures-util = "0.3"
RUST 代碼:
3. Angular 客户端:
Angular 配置:
將生成的
client.crt 和 client.key 放到和 package.json 同級文件夾下.
package.json
"start": "ng serve --host 0.0.0.0 --port 443 --ssl true --ssl-cert ./client.crt --ssl-key ./client.key",
}
// 補充
./client.crt 和 ./client.key 是相對路徑,表示這些證書文件位於當前工作目錄。當前工作目錄指的是你在運行 ng serve 命令時所在的目錄,也就是命令行提示符下的目錄。如果你在項目的根目錄下運行這個命令(通常是包含 package.json 文件的目錄),./ 就表示這個項目的根目錄
angular 代碼:
ngOnInit() { this.websocketTest(); } websocketTest() { const url: string = 'wss://127.0.0.1:10096'; const myWebSocket = webSocket({ url: url, openObserver: { next: () => { console.info('WebSocket 連接已建立: ' + url); }, error: (err) => { console.error('WebSocket 連接出錯: ' + url); console.error(err); }, }, }); const data = JSON.stringify({name: '張三', age: 18, sex: '男'}); myWebSocket.next(data); console.log('客户端發送請求: ', data); myWebSocket.subscribe( next => { console.log('客户端收到響應: ', next); }, error => { console.error('WebSocket 出錯: ' + url); console.error(error); } ); }
4. 谷歌瀏覽器設置
谷歌瀏覽器圖標右擊 屬性 -> 快捷方式 -> 目標(修改其中字符串, )
原來類似 "C:\Program Files\Google\Chrome\Application\chrome.exe"
修改為 "C:\Program Files\Google\Chrome\Application\chrome.exe" --ignore-certificate-errors

這個命令會忽略證書錯誤。正常情況下,當你訪問一個使用自簽名或無效證書的網站時,Chrome 會顯示一個警告頁面,指示你有潛在的安全風險。然而,使用 --ignore-certificate-errors 參數可以忽略這些證書錯誤,並允許你繼續訪問網站,而不會受到瀏覽器的證書警告頁面的干擾。
5. 結果展示:
前端項目使用 npm start 啓動:

前端控制枱:

後端控制枱:

版權聲明:本文為博客園博主「書源」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:rust angular 自簽名證書 wss - 書源 - 博客園 (cnblogs.com)