本頁面說明如何在建立 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」頁面。
按一下「Instance ID」,查看執行個體的「Instance details」頁面。
按一下「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,或使用第三方附屬程式啟用 TLS。
如果用戶端支援 TLS,請將其指向 Redis 執行個體的 IP、port 6378
和包含憑證授權單位的檔案。如果您選擇使用 sidecar,建議您使用 Stunnel。
其他用戶端設定
部分用戶端預設不接受自行簽署的憑證,因此需要額外設定。
舉例來說,Lettuce 是熱門的 Redis Java 用戶端。說明文件提供原生 TLS 連線的範例 (請參閱「示例 47」)。由於 Java 安全性管理工具預設不允許自行簽署的憑證,因此需要在 Redis URI 建構 .withVerifyPeer(false)
中指定其他選項。
使用 Stunnel 和 telnet 安全地連線至 Redis 執行個體
如要瞭解如何使用 Stunnel 在 Compute Engine 用戶端上啟用傳輸中加密功能,請參閱「使用 Stunnel 和 telnet 安全地連線至 Redis 執行個體」一文。
管理憑證授權單位輪替
您應安裝所有可下載的憑證授權單位,並安裝在存取 Redis 執行個體的用戶端上。
一旦新 CA 可供使用,除了先前的 CA 之外,也請安裝新的 CA,這是確保在發生憑證授權單位輪替事件時,您擁有必要 CA 的最簡單方式。
引入新的憑證授權單位後,請執行下列指令,查看新 CA 的內容:
gcloud redis instances describe instance-id --region=region
接著,複製並貼到最新的憑證授權單位,並將其貼到您儲存先前 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----- -----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 與 gcloud redis
instances describe
顯示的 CA 相符,即可確保您擁有必要的 CA。輪替事件開始後,系統會產生多個 CA,確保有充足的時間進行輪替,並盡量減少停機時間。
後續步驟
- 參閱傳輸中資料加密總覽。
- 瞭解 Memorystore for Redis 的 Redis AUTH 功能。