簡介
SSL
SSL 全名是 Secure Sockets Layer (安全通訊端層),是一種標準的技術,用來保持網路連線安全,防止敏感資料被竊取或傳輸的資料被修改。此技術可使用加密演算法來混淆傳輸的資料,防止資料被竊取。
TLS
TLS (Transport Layer Security, 傳輸層安全協議) 是 IETF 將 SSL 標準化,並將名稱改為 TLS.
HTTPS
HTTPS (Hyper Text Transfer Protocol Secure, 超文字傳輸安全協定) 是一種安全的網路傳輸協議,經由 HTTP 進行通訊,但利用 SSL/TLS 來加密封包,保障資料傳輸的安全性及完整性。
產生 SSL/TLS 憑證
產生憑證有以下方式:
申請免費 SSL 憑證
詳細步驟可以參考: [SSL] Nginx + Let’s encrypt SSL 憑證。
自行簽署憑證
使用 triple DES 演算法加密,產生長度為 2048 bits 的 RSA key:
1 | $ openssl genrsa -des3 -out server.enc.key 2048 |
產生 csr file:
1 | $ openssl req -new -key server.enc.key -out server.csr |
產生未加密的 key:
1 | $ openssl rsa -in server.enc.key -out server.key |
最後,自行簽屬憑證:
1 | $ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt |
使用 SSL/TLS 憑證
整合到目前的 Express app, 取代原本的 HTTP server:
1 | const fs = require('fs'); |