Redis 啟用 TLS 加密傳輸配置
一、Redis TLS 加密概述
Redis 從 6.0 版本開始原生支持 TLS 加密傳輸,可以保護客戶端與服務器之間的通信安全,防止數據被竊聽或篡改。
二、準備工作
確認 Redis 版本?:
redis-server --version
確保版本 ≥ 6.0
安裝依賴?:
sudo apt-get install openssl
三、生成 TLS 證書
1. 創建證書目錄
mkdir -p /etc/redis/certs
cd /etc/redis/certs
2. 生成 CA 私鑰和證書
openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt
- 生成 Redis 服務器證書
# 生成私鑰
openssl genrsa -out redis.key 2048# 創建證書簽名請求 (CSR)
openssl req -new -key redis.key -out redis.csr# 使用 CA 簽署證書
openssl x509 -req -in redis.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out redis.crt -days 365 -sha256# 合并證書和私鑰
cat redis.key redis.crt > redis.pem
4. 設置權限
chown redis:redis /etc/redis/certs/*
chmod 600 /etc/redis/certs/*
四、配置 Redis 服務器 TLS
編輯 /etc/redis/redis.conf:
# 啟用 TLS
tls-port 6379
port 0 # 禁用非 TLS 端口# 證書配置
tls-cert-file /etc/redis/certs/redis.crt
tls-key-file /etc/redis/certs/redis.key
tls-ca-cert-file /etc/redis/certs/ca.crt# 安全設置
tls-auth-clients yes # 要求客戶端使用證書
tls-protocols "TLSv1.2 TLSv1.3"
tls-ciphers DEFAULT:!MEDIUM
tls-ciphersuites TLS_CHACHA20_POLY1305_SHA256
tls-prefer-server-ciphers yes
五、重啟 Redis 服務
sudo systemctl restart redis-server
六、客戶端連接配置
###1. Redis CLI 連接
redis-cli --tls \--cert /etc/redis/certs/redis.crt \--key /etc/redis/certs/redis.key \--cacert /etc/redis/certs/ca.crt
2. 編程語言客戶端示例
PHP (Predis)
$client = new Predis\Client(['scheme' => 'tls','host' => 'your.redis.host','port' => 6379,'ssl' => ['cafile' => '/path/to/ca.crt','verify_peer' => true]
]);
Python (redis-py)
import redisr = redis.Redis(host='your.redis.host',port=6379,ssl=True,ssl_ca_certs='/path/to/ca.crt',ssl_cert_reqs='required'
)
七、高級配置選項
雙向認證?:
tls-auth-clients yes
僅允許特定密碼套件?:
tls-ciphers "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384"
會話緩存?:
tls-session-caching yes
tls-session-cache-size 1000000
tls-session-cache-timeout 300
八、測試與驗證
測試連接?:
openssl s_client -connect localhost:6379 -cert /etc/redis/certs/redis.crt -key /etc/redis/certs/redis.key -CAfile /etc/redis/certs/ca.crt
查看 TLS 信息?:
redis-cli --tls -a yourpassword --no-auth-warning --tls-ca-cert-file /etc/redis/certs/ca.crt INFO SECURITY
九、常見問題解決
證書錯誤?:
- 確保證書路徑正確
- 檢查證書權限 (redis 用戶可讀)
- 驗證證書有效期
連接失敗?:
sudo tail -f /var/log/redis/redis-server.log
性能調優?:
- 對于高并發場景,考慮啟用會話緩存
- 監控 TLS 握手性能
十、安全最佳實踐
- 定期輪換證書 (建議每年一次)
- 禁用舊版 TLS 協議 (如 TLS 1.0/1.1)
- 監控證書過期時間
- 考慮使用證書管理工具 (如 certbot)
- 在生產環境使用受信任的 CA 簽發證書