本頁說明如何在建立 Redis 執行個體時啟用傳輸中加密功能,以及如何管理執行個體的傳輸中加密功能。傳輸中加密功能採用傳輸層安全標準 (TLS) 通訊協定。
如要瞭解傳輸加密的一般行為和優點,請參閱「傳輸加密」一文。
如要查看使用者必須具備哪些權限,才能在這個頁面執行管理工作,請參閱「傳輸中加密權限」。
您只能在首次建立 Redis 執行個體時啟用傳輸中加密功能。以這種方式建立的執行個體無法停用傳輸中加密。
建立啟用傳輸中資料加密的 Redis 執行個體
控制台
建立 Redis 執行個體時,請選取「啟用傳輸中資料加密功能」。
gcloud
如要建立具有傳輸中加密功能的 Redis 執行個體,請輸入下列指令,並將 variables 替換為適當的值:
gcloud redis instances create instance-id --transit-encryption-mode=SERVER_AUTHENTICATION --size=size --region=region-id
其中:
--transit-encryption-mode=SERVER_AUTHENTICATION
可為執行個體啟用傳輸中資料加密功能。
下載憑證授權單位
控制台
前往 Google Cloud 控制台的「Memorystore for Redis」頁面。
按一下「執行個體 ID」,即可查看執行個體的「執行個體詳細資料」頁面。
按一下「傳輸層安全標準 (TLS) 伺服器憑證」下方的「下載」或「全部下載」按鈕。
gcloud
如果執行個體已啟用傳輸中加密,執行下列指令時,您會看到憑證授權單位內容:
gcloud redis instances describe instance-id --region=region
回應主體會包含所有適用的憑證授權單位。以下是 Memorystore for Redis 的憑證授權單位 (CA) 範例:
-----BEGIN CERTIFICATE----- MIIDnTCCAoWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBhTEtMCsGA1UELhMkNzYx NTc4OGMtMTI2Yi00Nzk0LWI2MWMtY2YxOWE2Y2Y1ZjNiMTEwLwYDVQQDEyhHb29n bGUgQ2xvdWQgTWVtb3J5c3RvcmUgUmVkaXMgU2VydmVyIENBMRQwEgYDVQQKEwtH b29nbGUsIEluYzELMAkGA1UEBhMCVVMwHhcNMjAwOTE3MjEzNDE1WhcNMzAwOTE1 MjEzNTE1WjCBhTEtMCsGA1UELhMkNzYxNTc4OGMtMTI2Yi00Nzk0LWI2MWMtY2Yx OWE2Y2Y1ZjNiMTEwLwYDVQQDEyhHb29nbGUgQ2xvdWQgTWVtb3J5c3RvcmUgUmVk aXMgU2VydmVyIENBMRQwEgYDVQQKEwtHb29nbGUsIEluYzELMAkGA1UEBhMCVVMw ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCyDKmDHZm6tzMhNtKOnp8H 8+zTv1qA6OkBToVqCjKTTMGO18ovNtAAMjbGvclLuJNLbA2WTTWVttHen6Cn82h0 3gG9HMk9AwK1cVT7gW072h++TRsYddIRlwnSweRWL8jUX+PNt7CjFqH+sma/Hb1m CktHdBOa897JiYHrMVNTcpS8SFwwz05yHUTEVGlHdkvlaJXfHLe6keCMABLyjaMh 1Jl4gZI2WqLMV680pJusK6FI6q/NmqENFc9ywMEg395lHTK9w9e014WIXg0q7sU3 84ChVVS2yYOMEUWeov4Qx6XeVfA4ss5t7OCqsMQkvslkE90mJZcVvhBj3QvTH9Rz AgMBAAGjFjAUMBIGA1UdEwEB/wQIMAYBAf8CAQAwDQYJKoZIhvcNAQELBQADggEB AJkn+MDE4V10DZn4uEc0s0Mg4FEMC1fDewmDYwSNnxRlzfEi+wAX2AaqrJ4m4Qa7 xIyuSYxArEOY6QeyJyw7/06dom8aAv4aO2p8hE04Ih6QwaTMFIlT2Jf6TidVd3eT wfjwFJVoJ+dgxsaCv2uMFZWee5aRHmKzj9LhqPwpWnTs9Q/qmOheUNoe2/1i8yvn 662M7RZMR7fZH6ETsdz5w1nPXXiRqJ7K0EGKoPNjMlYK3/U1X3sazI4tpMNgTdxG rnNh9Sd9REMBmDCPj9dUI9k4hQX4yQZp96fnLT6cet22OPajEKnpzyqJs1s4iX/g lEtWs4V/YBhKA56CW6ASZS8= -----END CERTIFICATE-----
暫時複製並儲存所有 CA,以便在存取 Redis 執行個體的用戶端上安裝這些 CA。
在用戶端上安裝憑證授權單位
您必須在連線用戶端上安裝 Redis 執行個體的憑證授權單位。CA 安裝程序可能會因用戶端類型而異。下列步驟說明如何在 Compute Engine Linux VM 上安裝 CA。
使用 SSH 連線至 Compute Engine Linux 用戶端。
在用戶端中執行下列指令,建立名為
server_ca.pem
的檔案:sudo vim /tmp/server_ca.pem
下載憑證授權單位,然後貼到先前建立的
server_ca.pem
檔案中。CA 的文字格式必須正確:
- 複製整個憑證授權單位,包括
-----BEGIN CERTIFICATE-----
和-----END CERTIFICATE-----
行。 - 請確認 CA 的文字完全靠左對齊。CA 任何一行的開頭都不應有空格。
- 複製整個憑證授權單位,包括
設定用戶端以進行傳輸中資料加密
用來連線至 Redis 執行個體的用戶端必須支援 TLS,或使用第三方 Sidecar 啟用 TLS。
如果用戶端支援 TLS,請將其設定為指向 Redis 執行個體的 IP、通訊埠 6378
,以及包含憑證授權單位的檔案。如果選擇使用 Sidecar,建議使用 Stunnel。
其他用戶端設定
部分用戶端預設不接受自行簽署的憑證,因此需要額外設定。
舉例來說,Lettuce 是 Redis 的熱門 Java 用戶端。他們的說明文件提供以 TLS 原生連線的範例 (請參閱範例 47)。由於 Java Security Manager 預設不允許使用自行簽署的憑證,因此需要在 Redis URI 建構 .withVerifyPeer(false)
中指定其他選項。
使用 Stunnel 和 Telnet 安全地連線至 Redis 執行個體
如要瞭解如何使用 Stunnel 在 Compute Engine 用戶端上啟用傳輸中加密功能,請參閱「使用 Stunnel 和 telnet 安全連線至 Redis 執行個體」。
管理憑證授權單位輪替
您應在存取 Redis 執行個體的用戶端上安裝所有可下載的憑證授權單位。
除了先前的 CA 之外,一旦新的 CA 可供使用,請立即安裝,這是確保您在發生憑證授權單位輪替事件時,擁有必要 CA 的最簡單方法。
導入新的憑證授權單位後,請執行下列指令來查看新 CA 的內容:
gcloud redis instances describe instance-id --region=region
接著,將最新的憑證授權單位複製並貼到用戶端檔案中,您先前已將舊版憑證授權單位儲存到該檔案。
檔案應採用下列格式。憑證授權單位順序沒有影響:
-----BEGIN CERTIFICATE----- MIIDnTCCAoWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBhTEtMCsGA1UELhMkNzYx NTc4OGMtMTI2Yi00Nzk0LWI2MWMtY2YxOWE2Y2Y1ZjNiMTEwLwYDVQQDEyhHb29n bGUgQ2xvdWQgTWVtb3J5c3RvcmUgUmVkaXMgU2VydmVyIENBMRQwEgYDVQQKEwtH b29nbGUsIEluYzELMAkGA1UEBhMCVVMwHhcNMjAwOTE3MjEzNDE1WhcNMzAwOTE1 MjEzNTE1WjCBhTEtMCsGA1UELhMkNzYxNTc4OGMtMTI2Yi00Nzk0LWI2MWMtY2Yx OWE2Y2Y1ZjNiMTEwLwYDVQQDEyhHb29nbGUgQ2xvdWQgTWVtb3J5c3RvcmUgUmVk aXMgU2VydmVyIENBMRQwEgYDVQQKEwtHb29nbGUsIEluYzELMAkGA1UEBhMCVVMw ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCyDKmDHZm6tzMhNtKOnp8H 8+zTv1qA6OkBToVqCjKTTMGO18ovNtAAMjbGvclLuJNLbA2WTTWVttHen6Cn82h0 3gG9HMk9AwK1cVT7gW072h++TRsYddIRlwnSweRWL8jUX+PNt7CjFqH+sma/Hb1m CktHdBOa897JiYHrMVNTcpS8SFwwz05yHUTEVGlHdkvlaJXfHLe6keCMABLyjaMh 1Jl4gZI2WqLMV680pJusK6FI6q/NmqENFc9ywMEg395lHTK9w9e014WIXg0q7sU3 84ChVVS2yYOMEUWeov4Qx6XeVfA4ss5t7OCqsMQkvslkE90mJZcVvhBj3QvTH9Rz AgMBAAGjFjAUMBIGA1UdEwEB/wQIMAYBAf8CAQAwDQYJKoZIhvcNAQELBQADggEB AJkn+MDE4V10DZn4uEc0s0Mg4FEMC1fDewmDYwSNnxRlzfEi+wAX2AaqrJ4m4Qa7 xIyuSYxArEOY6QeyJyw7/06dom8aAv4aO2p8hE04Ih6QwaTMFIlT2Jf6TidVd3eT wfjwFJVoJ+dgxsaCv2uMFZWee5aRHmKzj9LhqPwpWnTs9Q/qmOheUNoe2/1i8yvn 662M7RZMR7fZH6ETsdz5w1nPXXiRqJ7K0EGKoPNjMlYK3/U1X3sazI4tpMNgTdxG rnNh9Sd9REMBmDCPj9dUI9k4hQX4yQZp96fnLT6cet22OPajEKnpzyqJs1s4iX/g lEtWs4V/YBhKA56CW6ASZS8= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIDnTCCAoWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBhTEtMCsGA1UELhMkYjg4 ZTUzYTMtODdmNC00N2VhLWJjN2MtYTdhMzM4NmIwZmU4MTEwLwYDVQQDEyhHb29n bGUgQ2xvdWQgTWVtb3J5c3RvcmUgUmVkaXMgU2VydmVyIENBMRQwEgYDVQQKEwtH b29nbGUsIEluYzELMAkGA1UEBhMCVVMwHhcNMjAwOTE4MjEzMTI3WhcNMzAwOTE2 MjEzMjI3WjCBhTEtMCsGA1UELhMkYjg4ZTUzYTMtODdmNC00N2VhLWJjN2MtYTdh MzM4NmIwZmU4MTEwLwYDVQQDEyhHb29nbGUgQ2xvdWQgTWVtb3J5c3RvcmUgUmVk aXMgU2VydmVyIENBMRQwEgYDVQQKEwtHb29nbGUsIEluYzELMAkGA1UEBhMCVVMw ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDEO4Zs/So5DA6wtftkAElD 8BVREob4gby2mGBYAtd3JJQKFC+zIqCf2DhrWihrCeXhsdsZqJUF16E3MsCCWS2T UWt6T37zObU2fzKmb7X+TSw1tunIUcIXwWzoMhqdGrIvfI9guMbF+KssQIjDMs9M G/hY6cY1NB5THOxXqcxzYrwSKB1EE160EDz4RgKAYQhw7AyVOBBAbWqA5pTEDuUy qpsz+NFpKYTwaeTpzil0xIl0JJS3DOd4G7ZnMG2wFT2j3wt+P0SkAPuOWgmX82iO gGmKoaCh3KcICie/rZRTfsRPjMm+yswRQRDeLB5eoMmH+gbUInVZU0qOJ/7gOYEb AgMBAAGjFjAUMBIGA1UdEwEB/wQIMAYBAf8CAQAwDQYJKoZIhvcNAQELBQADggEB AF4xlEbwLUK5VjoKlJBtKXLYrYcW+AbQLhZQFP8exE8bOW7p39h+5J0nl3ItPxu6 97BCt1P5TFisba8pBxaExiDsYmjKQrhtizMkzl5h9hGksOgoLlAqaaxfA97+Q9Tq 5gaYChESur/159Z3jiM47obKoZmHfgSgr//7tjII7yZxUGhOjIVffv/fEa4aixqM 0yH1V1s8hWHZeui2VFrHmTxY20IH9ktyedjSUgnFXzsEH6sbR18p0wBZqyrrtURs DaUIeoOHfHgEJM8k/wphSJI0V6pMC6nax2JhexLTRiUsiGTLRDe3VtsdWqS2DLa9 9DmrfdF0eFrfWw3VRNLwwXg= -----END CERTIFICATE-----
如要確認您擁有必要的 CA,請確認儲存在用戶端檔案中的 CA 與 gcloud redis
instances describe
顯示的 CA 相符。輪替事件開始後,會有許多 CA,確保輪替作業有充足時間,且停機時間最短。
後續步驟
- 閱讀傳輸加密總覽。
- 瞭解 Memorystore for Redis 的 Redis AUTH 功能。