原文:https://redis.io/topics/encryption
翻譯:Wen Hui
轉(zhuǎn)載:中間件小哥
Redis從版本6開始支持SSL / TLS托呕,這是一項可選功能磕蛇,需要在編譯時啟用。
編譯
要使用TLS支持進(jìn)行構(gòu)建堰乔,你需要OpenSSL開發(fā)庫(例如Debian / Ubuntu上的libssl-dev)。
運行make BUILD_TLS = yes累舷。
驗證
要使用TLS運行Redis測試套件浩考,你需要TCL的TLS支持(即Debian / Ubuntu上的tcl-tls軟件包)夹孔。
1. 運行./utils/gen-test-certs.sh生成根CA證書和服務(wù)器證書被盈。
2. 運行./runtest --tls或./runtest-cluster --tls,以TLS模式運行Redis和Redis集群測試搭伤。
手動運行
要以TLS模式手動運行Redis服務(wù)器(假設(shè)已調(diào)用gen-test-certs.sh只怎,因此示例證書/密鑰可用):
./src/redis-server --tls-port 6379 --port 0 \
--tls-cert-file ./tests/tls/redis.crt \
--tls-key-file ./tests/tls/redis.key \
--tls-ca-cert-file ./tests/tls/ca.crt
使用redis-cli連接到此Redis服務(wù)器:
./src/redis-cli –tls --cert ./tests/tls/redis.crt --key ./tests/tls/redis.key --cacert ./tests/tls/ca.crt
證書配置
為了支持TLS,必須為Redis配置X.509證書和私鑰怜俐。此外身堡,在驗證證書時,必須指定可信任的根CA證書文件或路徑拍鲤。為了支持基于DH的密碼贴谎,還可以配置DH params文件。例如:
tls-cert-file /path/to/redis.crt
tls-key-file /path/to/redis.key
tls-ca-cert-file /path/to/ca.crt
tls-dh-params-file /path/to/redis.dh
TLS監(jiān)聽端口
tls-port配置可在指定端口上接受SSL / TLS連接季稳。這是偵聽TCP連接的額外端口擅这,因此可以同時使用TLS和非TLS連接訪問不同端口上的Redis實例。
您可以指定端口0以完全禁用非TLS端口景鼠。要僅在默認(rèn)Redis端口上啟用TLS仲翎,請使用:
port 0
tls-port 6379
客戶端證書認(rèn)證
默認(rèn)情況下,Redis使用雙向TLS并要求客戶端使用有效證書進(jìn)行身份驗證(根據(jù)由ca-cert-file或ca-cert-dir指定的受信任根CA證書進(jìn)行身份驗證)铛漓。
您可以使用tls-auth-clients no禁用客戶端身份驗證溯香。
主從復(fù)制
Redis主服務(wù)器以相同的方式處理連接客戶端和從服務(wù)器,因此上述tls-port和tls-auth-clients指令也適用于復(fù)制鏈接浓恶。
在從服務(wù)器端玫坛,必須指定tls-replication yes才能將TLS用于到主服務(wù)器的對外連接。
集群
使用Redis集群時包晰,請使用tls-cluster yes以便為集群和跨節(jié)點連接啟用TLS湿镀。
Sentinel(哨兵)模式
Sentinel從通用Redis配置繼承其網(wǎng)絡(luò)配置,因此上述所有內(nèi)容同樣適用于Sentinel杜窄。
連接到主服務(wù)器時肠骆,Sentinel將使用tls-replication指令來確定是否需要TLS或非TLS連接。
附加配置
可以使用其他TLS配置來控制TLS協(xié)議版本塞耕,密碼和密碼套件等的選擇蚀腿。有關(guān)更多信息,請查閱帶備注的redis.conf。
局限性
TLS當(dāng)前不支持I / O多線程莉钙。