転送中の暗号化の有効化

このページでは、Redis インスタンスの作成時に転送中の暗号化を有効にする方法と、インスタンスの転送中の暗号化を管理する方法について説明します。転送中の暗号化では、Transport Layer Security(TLS)プロトコルが使用されます。

転送中の暗号化の一般的な動作とメリットについては、転送中の暗号化をご覧ください。

このページの管理タスクの実行に必要な権限については、転送中の暗号化の権限をご覧ください。

転送中の暗号化は、Redis インスタンスを最初に作成するときにのみ有効にできます。このように作成されたインスタンスでは、転送中の暗号化は無効にできません。

転送中の暗号化を使用した Redis インスタンスの作成

Console

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 により、インスタンスで転送中の暗号化が有効になります。

認証局のダウンロード

Console

  1. Google Cloud Console で [Memorystore for Redis] ページに移動します。

    Memorystore for Redis

  2. インスタンス ID をクリックして、インスタンスの [インスタンスの詳細] ページを表示します。

  3. [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-----

Redis インスタンスにアクセスするクライアントに CA をインストールできるように、すべての CA を一時的にコピーして保存します。

クライアント側に認証局をインストールする

Redis インスタンスの認証局は、接続先のクライアントにインストールする必要があります。CA のインストールは、クライアントの種類によって異なります。次の手順では、Compute Engine Linux VM に CA をインストールする方法について説明します。

  1. Compute Engine の Linux クライアントに SSH で接続します。

  2. 次のコマンドを実行して、クライアントで server_ca.pem というファイルを作成します。

    sudo vim /tmp/server_ca.pem
    
  3. 認証局をダウンロードして、前の手順で作成した server_ca.pem ファイルに貼り付けます。

    CA のテキストは、正しい形式になっている必要があります。

    • -----BEGIN CERTIFICATE----- 行と -----END CERTIFICATE----- 行を含む認証局全体をコピーします。
    • CA のテキストが、完全に左揃えになっていることを確認します。CA のいずれの行の先頭にもスペースが含まれていないようにする必要があります。

転送中暗号化用のクライアントの構成

Redis インスタンスへの接続に使用するクライアントは、TLS をサポートするか、サードパーティのサイドカーを使用して TLS を有効にする必要があります。

クライアントが TLS をサポートしている場合は、Redis インスタンスの IP(ポートは 6378)と認証局を含むファイルを指すように TLS を構成します。サイドカーを使用する場合は、stunnel の使用をおすすめします。

追加のクライアント構成

クライアントの中には、デフォルトでは自己署名証明書を受け入れず、追加構成を必要とするものがあります。

たとえば、よく使われている Redis 向けの Java クライアントの Lettuce などです。Lettuce のドキュメントでは、TLS でネイティブに接続する例が紹介されています(例 47 をご覧ください)。デフォルトでは、Java Security Manager が自己署名の証明書を許可しないため、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 を保存したクライアント内のファイルに貼り付けます。

このファイルは次の形式にする必要があります。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 があることを確認するには、クライアント ファイルに保存されている CA が gcloud redis instances describe で示される CA と一致していることを確認します。ローテーション イベントが開始されると、複数の CA により、最小限のダウンタイムでローテーションに十分な時間が確保されます。

次のステップ