Redis TLS
Redis TLS (SSL/TLS 암호화)
Redis는 버전 6부터 SSL/TLS를 선택 기능으로 지원하며, 컴파일 타임에 활성화해야 합니다. TLS를 쓰면 클라이언트-서버 통신(및 복제·클러스터·Sentinel 통신)을 암호화하고 서버·클라이언트 인증서 검증으로 보안을 강화할 수 있습니다.
출처: https://redis.io/docs/latest/operate/oss_and_stack/management/security/encryption/
시작하기
빌드
TLS 지원으로 빌드하려면 OpenSSL 개발 라이브러리(Debian/Ubuntu에선 libssl-dev)가 필요합니다. 다음 명령으로 빌드합니다.
make BUILD_TLS=yes
테스트
TLS로 Redis 테스트 스위트를 돌리려면 TCL용 TLS 지원(tcl-tls 패키지)이 필요합니다.
./utils/gen-test-certs.sh를 실행해 루트 CA와 서버 인증서를 생성합니다../runtest --tls또는./runtest-cluster --tls로 Redis·Redis Cluster 테스트를 TLS 모드로 실행합니다.
수동 실행
TLS 모드로 Redis 서버를 수동 실행하려면(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로 이 서버에 연결:
./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 리스닝 포트
tls-port 구성 지시어는 지정한 포트에서 SSL/TLS 연결을 수락하게 합니다. 이는 port의 TCP 연결에 추가로 동작하므로, TLS·비TLS 연결로 서로 다른 포트에서 Redis에 접근할 수 있습니다.
port 0을 지정하면 비TLS 포트를 완전히 끌 수 있습니다. 기본 Redis 포트에서 TLS만 켜려면:
port 0
tls-port 6379
클라이언트 인증서 인증
tls-auth-clients 지시어로 클라이언트 인증서 인증을 활성화할 수 있습니다.(default는 yes). 활성화하면 클라이언트도 유효한 인증서를 제시해야 합니다.
tls-auth-clients yes
tls-cert-file /etc/ssl/redis.crt
tls-key-file /etc/ssl/redis.key
tls-ca-cert-file /etc/ssl/ca.crt
복제 (Replication)
복제에서 TLS를 쓰려면 마스터·복제본 모두 TLS로 구성하고, 복제본은 마스터 인증서를 검증하기 위한 CA와 마스터 호스트 이름 확인 설정이 필요합니다. 예:
# 마스터
tls-replication yes
# 복제본
tls-replication yes
replicaof master-host 6379
tls-ca-cert-file /etc/ssl/ca.crt
클러스터
Redis Cluster 노드 간 통신도 TLS로 보호할 수 있습니다. tls-cluster yes를 설정하면 클러스터 버스(노드 간) 통신이 TLS로 암호화됩니다. 각 노드가 CA·인증서로 구성되어야 하며, 클러스터 버스 포트도 TLS를 따라야 합니다.
tls-cluster yes
Sentinel
Sentinel이 Redis 서버와 통신할 때도 TLS를 쓸 수 있습니다. Sentinel 구성에서 TLS 관련 지시어를 켜고, 감시 중인 마스터/복제본이 TLS로 구성되어야 합니다.
tls-replication yes
sentinel monitor mymaster master-host 6379 2
추가 구성
TLS 관련 추가 지시어로 프리퍼드 암호 스위트(tls-ciphers, tls-ciphersuites), 프로토콜 버전(tls-protocols) 등이 있습니다.
성능 고려사항
TLS는 암호화·복호화 오버헤드 때문에 특정 워크로드에서 처리량이 떨어질 수 있습니다. 하드웨어 가속(예: AES-NI)이 가능한 CPU와 적절한 TLS 세션 재사용으로 성능 저하를 줄일 수 있습니다.
제한 사항
- TLS 지원은 컴파일 타임에 활성화해야 해서 배포 바이너리에 따라 TLS가 없을 수 있습니다.
- 버전에 따라 일부 지시어·동작(예: 특정 프로토콜 기본값)이 다를 수 있습니다. 사용 버전 문서를 확인하세요.
더 알아보기 (Learn more)
- Redis 보안 전반(보호 모드·ACL): Redis security
- 인증·사용자 권한: ACL
- 연결 관련 구성: Redis configuration