Files
llm-wiki/raw/official-docs/redis-tls-encryption-in-transit.md
T

11 KiB

title, source_type, url, archive_url, related_branches, related_projects, tags, created
title source_type url archive_url related_branches related_projects tags created
official-doc / Redis — TLS (Encryption in Transit) official-doc https://redis.io/docs/latest/operate/oss_and_stack/management/security/encryption/
feature-redis-runtime-role-isolation-contract
ca-skeleton
official-doc
ca-skeleton
security
redis
mtls
2026-07-28

official-doc / Redis — TLS (Encryption in Transit)

Layer: raw/ — 외부 자료(공식 문서 / 대기업 기술 블로그)의 원문 발췌·출처 기록. 본 템플릿은 raw/official-docs/raw/company-tech-blogs/ 두 폴더가 공유. 검증된 요약은 /ingestwiki/concepts/source-summary-template 형식으로 별도 작성. 원본은 raw에 영구 보관.

source_type 허용값

  • official-doc — Redis 공식 레퍼런스 (redis.io/docs, oss_and_stack).

Parent / 활용 branch

Branch 이 자료가 정당화하는 결정
raw/branch-notes/feature-redis-runtime-role-isolation-contract production 에서 role 별 Redis 연결에 TLS(mutual TLS 포함) + 명시적 trust bundle(CA cert)을 요구하고, port 0 + tls-port 로 plaintext downgrade 를 startup 에서 원천 차단하며, replication/cluster bus 채널도 별도 TLS 플래그(tls-replication/tls-cluster)로 각각 켜야 한다는 결정의 근거

출처

왜 저장했는지

Redis 서버 자체가 TLS 를 컴파일 타임 옵션으로 지원하며 기본적으로 켜져 있지 않다는 것, port 0/tls-port 조합으로 plaintext 를 완전히 차단하는 방법, mutual TLS 가 (TLS 활성화 시) 기본 동작이라는 것, 그리고 replication/cluster 채널은 client-facing tls-port 와 별개로 각각 켜야 한다는 것을 검증하기 위해 보관. feature-redis-runtime-role-isolation-contract 의 role 별 TLS 강제 결정의 1차 근거.

핵심 인용

[§Getting Started] "SSL/TLS is supported by Redis starting with version 6 as an optional feature" [...] "that needs to be enabled at compile time."

[§TLS listening port] "You may specify port 0 to disable the non-TLS port completely."

[§Client certificate authentication] "By default, Redis uses mutual TLS and requires clients to authenticate with a" [...] "valid certificate (authenticated against trusted root CAs specified by" [...] "ca-cert-file or ca-cert-dir)." [...] "You may use tls-auth-clients no to disable client authentication."

[§Replication] "On the replica server side, it is necessary to specify tls-replication yes to" [...] "use TLS for outgoing connections to the master."

[§Cluster] "When Redis Cluster is used, use tls-cluster yes in order to enable TLS for the" [...] "cluster bus and cross-node connections."

[§Performance considerations] "TLS adds a layer to the communication stack with overheads due to writing/reading to/from an SSL connection, encryption/decryption and integrity checks." [...] "using TLS results in a decrease of the achievable throughput per Redis instance"

Claims Extracted

Claim ID Claim (이 자료가 직접 말하는 것) Evidence quote Strength Applies to Does not prove
REDIS-TLS-C1 Redis 의 SSL/TLS 지원은 버전 6부터 시작된 컴파일 타임(BUILD_TLS=yes) 옵션 기능이며 기본 활성 상태가 아니다 [§Getting Started] "SSL/TLS is supported by Redis starting with version 6 as an optional feature that needs to be enabled at compile time." official-vendor-doc Redis OSS/Stack 서버 바이너리가 TLS 를 지원하려면 별도 빌드 플래그가 필요하다는 사실 특정 배포판(managed Redis, Docker 공식 이미지 등)이 기본적으로 TLS 지원 빌드인지 여부는 증명하지 않음 — 배포 환경별 확인 필요
REDIS-TLS-C2 port 0 로 non-TLS 포트를 완전히 끄고 tls-port 만 열어 plaintext 연결을 원천 차단할 수 있다 [§TLS listening port] "You may specify port 0 to disable the non-TLS port completely." official-vendor-doc production 에서 plaintext downgrade 를 startup 설정으로 차단하는 방법의 근거 tls-port 만으로 인증서 검증 강도(hostname verification 등)까지 보장한다는 뜻은 아님 — 이 문서는 hostname verification 을 언급하지 않음
REDIS-TLS-C3 TLS 활성화 시 Redis 는 기본적으로 mutual TLS 를 사용하며 신뢰 루트 CA 로 검증된 유효 클라이언트 인증서를 요구하고, 이 요구는 tls-auth-clients no 로 명시적으로 꺼야만 해제된다 [§Client certificate authentication] "By default, Redis uses mutual TLS and requires clients to authenticate with a valid certificate (authenticated against trusted root CAs specified by ca-cert-file or ca-cert-dir)." + "You may use tls-auth-clients no to disable client authentication." official-vendor-doc 서버가 클라이언트 인증서를 요구하는 기본값(opt-in 아니라 opt-out)이라는 것, trust-all 이 기본이 아니라는 것 hostname verification(서버 인증서의 CN/SAN이 접속 hostname과 일치하는지 검증)은 이 문서에 전혀 언급되지 않음 — mutual TLS(클라이언트 인증) 과 hostname verification(서버 인증 강화) 은 별개 개념이며, 후자는 클라이언트 라이브러리(Lettuce/Jedis 등) 설정에서 별도로 검증 필요. UNSUPPORTED_DECISION — 이 문서만으로 hostname verification 요구를 정당화할 수 없음
REDIS-TLS-C4 replication 링크는 client-facing tls-port/tls-auth-clients 설정을 그대로 상속하지만, replica 가 master 로의 outbound 연결에 TLS 를 쓰려면 replica 측에서 별도로 tls-replication yes 를 명시해야 한다 [§Replication] "On the replica server side, it is necessary to specify tls-replication yes to use TLS for outgoing connections to the master." official-vendor-doc replication 채널이 client 채널과 별개의 명시적 opt-in 플래그를 요구한다는 근거 이 프로젝트의 role(cache/coordination/session)별 replication 토폴로지가 실제로 존재하는지, Spring Data Redis 클라이언트 설정에서 이 서버 플래그가 어떻게 매핑되는지는 증명하지 않음
REDIS-TLS-C5 Redis Cluster 사용 시 tls-cluster yes 를 명시해야 cluster bus 와 cross-node 연결에 TLS 가 적용된다 [§Cluster] "When Redis Cluster is used, use tls-cluster yes in order to enable TLS for the cluster bus and cross-node connections." official-vendor-doc cluster bus 채널이 client-facing TLS 설정과 별개의 명시적 opt-in 플래그를 요구한다는 근거 이 프로젝트가 Redis Cluster 토폴로지를 실제로 쓰는지(vs standalone/Sentinel) 는 증명하지 않음 — 이 branch 의 role 분리 결정과 무관하게 배포 토폴로지 별개 확인 필요
REDIS-TLS-C6 TLS 는 SSL 연결에 대한 write/read, 암복호화, 무결성 검사 오버헤드로 인해 Redis 인스턴스의 처리 가능 처리량(throughput)을 감소시킨다 [§Performance considerations] "TLS adds a layer to the communication stack with overheads due to writing/reading to/from an SSL connection, encryption/decryption and integrity checks. Consequently, using TLS results in a decrease of the achievable throughput per Redis instance" official-vendor-doc production 에서 TLS 적용이 성능 trade-off 를 수반한다는 사실 인정의 근거 구체적 처리량 감소 수치(%, latency 등)는 이 페이지에 없음 — 문서는 GitHub 논의(#7595) 로 위임, 수치는 별도 벤치마크 필요

Usage Boundaries

  • 적용 가능: production Redis 연결에 대해 (1) port 0 + tls-port 로 plaintext 리스너를 완전히 제거하고, (2) TLS 활성화 시 mutual TLS(클라이언트 인증서)가 기본이며 tls-auth-clients no 로만 해제 가능하다는 사실, (3) replication(tls-replication yes)과 cluster bus(tls-cluster yes)는 client-facing TLS 와 독립적으로 각각 켜야 한다는 사실, (4) TLS 가 처리량 저하 비용을 수반한다는 사실 — 이 4가지는 이 문서만으로 정당화 가능.
  • 적용 불가 / UNSUPPORTED_DECISION: "hostname verification"을 요구한다는 branch 결정은 이 문서만으로 정당화되지 않는다. 이 페이지는 mutual TLS(클라이언트→서버 인증서 인증)와 CA trust bundle(tls-ca-cert-file)만 다루며, "서버 인증서의 hostname/SNI/CN 매칭"에 대한 서술이 전혀 없다(§본문 self-grep 결과 hostname, verify 키워드 0건). hostname verification 은 통상 클라이언트 라이브러리(Lettuce SslOptions.verifyPeer 등) 레벨 설정이므로, branch 가 이 요구를 유지하려면 별도의 클라이언트 라이브러리 공식 문서를 추가 근거로 확보해야 한다.
  • trust-all 거절: tls-auth-clients 는 서버가 클라이언트를 신뢰할지에 대한 스위치일 뿐, 클라이언트가 서버를 무조건 신뢰(trust-all)하지 않도록 막는 것은 클라이언트 측 설정 영역이라 이 문서 범위 밖.
  • 이 프로젝트에 적용하려면 추가 확인 필요: Spring Data Redis / Lettuce 클라이언트가 이 서버 플래그들(tls-port, tls-auth-clients, tls-replication, tls-cluster)에 대응하는 자체 설정(RedisStandaloneConfiguration, SslOptions, hostname verification mode 등)이 실제로 무엇인지는 별도 official-doc(Spring Data Redis / Lettuce) 확보 필요.

메모

  • 이 문서는 Redis 서버(redis-server) 측 TLS 설정만 다룬다. 클라이언트(애플리케이션) 측 hostname verification·trust store 구성은 다른 공식 문서(Lettuce/Jedis)로 별도 보강 필요 — branch 결정의 "hostname verification" 부분은 현재 UNSUPPORTED_DECISION 상태.
  • tls-replication/tls-cluster 는 client 채널(tls-port)과 독립적인 opt-in 이므로, role 별(cache/coordination/session) 배포에서 replication 이나 cluster 를 쓰는 role 이 있다면 각각 별도로 켜야 한다는 점을 구현 가이드에 명시할 근거로 쓸 수 있음.
  • 추가로 봐야 할 동일 출처 페이지: Redis ACL 공식 문서(role 별 ACL 격리 근거), Lettuce/Jedis SSL 옵션 공식 문서(hostname verification 근거).

관련

  • 같은 주제 다른 official-doc: (아직 없음 — Lettuce/Jedis SSL 옵션 공식 문서 추가 수집 후보)
  • 이 자료를 인용한 wiki 요약: [[wiki/concepts/...]] (생성 시)