목차
728x90

Redis TLS/SSL
본 글에서는 Redis TLS/SSL 옵션을 정리하고 TEST 결과를 작성 하였습니다.
사전에 인증서가 필요하기 때문에 인증서 생성은 아래 링크를 참고 하시기 바랍니다.
https://sh-it-work.tistory.com/7
인증서 생성
개인키 발급 및 SSL 인증서 생성 WEB 서비스에 https를 적용할 경우 SSL 인증서를 Verisign, Thawte, GeoTrust등에서 인증서를 발급 받아야 하지만, 이는 비용이 발생하며 실 운용 서버가 아닌 경우 다른 방
sh-it-work.tistory.com
Redis TLS/SSL 옵션
옵 션 | 기본값 | 설 명 | 설정 예시 |
tls-port | - | TLS 수신 포트를 지정 | tls-port 6443 |
tls-cert-file | - | 서버 인증에 사용할 X.509 인증서, 파일은 PEM 형식 | tls-cert-file redis.crt |
tls-key-file | - | 서버 인증에 사용할 X.509 개인 키, 파일은 PEM 형식 | tls-key-file redis.key |
tls-client-cert-file | - | 클라이언트 전용 인증서 파일 | tls-client-cert-file client.crt |
tls-client-key-file | - | 클라이언트 전용 key 파일 | tls-client-key-file client.key |
tls-dh-params-file | - | DH(Diffie-Hellman)키 교환 사용하도록 DH 매개 변수 파일 | tls-dh-params-file redis.dh |
tls-ca-cert-file | - | TLS/SSL 클라이언트 및 피어 인증하도록 CA 인증서 | tls-ca-cert-file ca.crt |
tls-ca-cert-dir | - | CA 파일 디렉토리 | tls-ca-cert-dir /etc/ssl/certs |
tls-auth-clients | yes | 클라이언트 측 인증서 Check 할지 말지 결정하는 옵션 | tls-auth-clients no |
tls-replication | - | Redis 복제본에서 TLS 활성화 설정 | tls-replication yes |
tls-cluster | - | Redis 클러스터 사이 연결 TLS 활성화 설정 | tls-cluster yes |
tls-protocols | - | TLS 프로토콜 설정 | tls-protocols "TLSv1.2 TLSv1.3" |
tls-ciphers | - | TLSv1.2 이하에 대한 허용 암호 구성 | tls-ciphers DEFAULT:!MEDIUM |
tls-ciphersuites | - | TLSv1.3 ciphersutie에 대한 암호 그룹 설정 | tls-ciphersuites TLS_CHACH20_POLY1305_SHA256 |
tls-prefer-server-ciphers | - | 암호 선택 시 서버 설정을 먼저 사용하도록 설정 | tls-prefer-server-ciphers yes |
tls-session-caching | - | TLS 세션 캐싱 지원/비지원 설정 | tls-session-caching no |
tls-session-cache-size | 20480 | 캐시 된 TLS 세션 수 | tls-session-cache-size 5000 |
tls-session-cache-timeout | 300(s) | 캐시 된 TLS 세션 시간 제한 | tls-session-cache-timeout 300 |
Redis TLS/SSL TEST
TEST 환경
SW | Version |
Ubuntu | 22.0.4 |
Redis | 7.0.12 |
1. TLS 기본 설정 TEST
TLS 기본 옵션
port 0
tls-port 6443
tls-cert-file /home/redis/redis/certs/redis.crt
tls-key-file /home/redis/redis/certs/redis.key
tls-ca-cert-file /home/redis/redis/certs/rootca.crt
tls-ca-cert-dir /home/redis/redis/certs
tls-protocols "TLSv1.2 TLSv1.3"
TLS 기본 옵션 TEST
- redis-cli를 통해 6443 port 접속 확인
- Ping 명령어를 통해 서버 동작 확인
$ redis-cli -p 6443 --tls --insecure --cert /home/redis/redis/certs/redis.crt --key /home/redis/redis/certs/redis.key
127.0.0.1:6443> ping
PONG
127.0.0.1:6443>
- 로그 확인
# redis-cli로 부터 tls 정상 접속 된 로그 확인됨
92359:M 03 Aug 2023 11:00:59.987 - Accepted 127.0.0.1:51880
TLS 기본 옵션 설정 시 주의 사항
- port 0을 설정하지 않으면, GENERAL 설정에 port도 같이 Binding 된다.
2. tls-auth-clients 옵션 TEST
- no 설정 시 클라이언트 인증서는 필요하지 않고 허용되지 않는다.
- optional 설정 시 클라이언트 인증서가 허용되고 제공 된 경우 유효해야 하지만 필수는 아니다.
- Default 옵션은 yes이다.
tls-auth-clients 옵션 TEST
- yes 설정
tls-auth-clients yes
- yes 설정 시 redis-cli로 접속할 때 무조건 --cert, --key 옵션을 통해 인증서 파일, key 파일을 알려줘야 한다..
$ redis-cli -p 6443 --tls --insecure --cert /home/redis/redis/certs/redis.crt --key /home/redis/redis/certs/redis.key
- no 설정 시 redis-cli 접속할 때 인증서가 필요하지 않다.
$ redis-cli -p 6443 --tls --insecure
- optional 설정 시 위 2가지 방법으로 모두 접속 가능
$ redis-cli -p 6443 --tls --insecure --cert /home/redis/redis/certs/redis.crt --key /home/redis/redis/certs/redis.key
$ redis-cli -p 6443 --tls --insecure
3. tls-replication 옵션 TEST
- Default 옵션은 no
- 복제본이 마스터로 TLS 연결을 하고싶을 때 yes로 설정함
tls-replication TEST
- 복제본 redis.conf에서 tls-replication yes로 설정
tls-replication yes
- redis-cli를 통해 복제본 서버에 접속
$ redis-cli -h ${REDIS_REPLICATION_HOST} -p ${REPLICATION_PORT} --tls --insecure
- redis-cli 접속 후 복제본에서 마스터 연결
# 접속된 상태 예시
127.0.0.1:6380> replicaof ${MASTER_IP} ${MASTER_PORT}
ok
- replication 연결 확인
mstaer_link_status가 up 이면 연결이 정상적으로 된 것이다
# 예시
127.0.0.1:6380> info replication
# Replication
role:slave
master_host:${MASTER_IP}
master_port:${MASTER_PORT}
master_link_status:up
- 로그 확인
# Slave log
# 마지막에 REPLICA 구성이되어 success 로그 확인 됨
152310:S 03 Aug 2023 16:09:55.032 * Connecting to MASTER 192.168.53.23:6443
152310:S 03 Aug 2023 16:09:55.032 * MASTER <-> REPLICA sync started
...(생략)
152310:S 03 Aug 2023 16:10:00.048 * MASTER <-> REPLICA sync: Finished with success
# Master log
# replica 완료 succeeded 로그 확인됨
151833:M 03 Aug 2023 16:10:00.048 * Streamed RDB transfer with replica 192.168.53.23:6380 succeeded (socket). Waiting for REPLCONF ACK from slave to enable streaming
151833:M 03 Aug 2023 16:10:00.048 * Synchronization with replica 192.168.53.23:6380 succeeded
tls-replication 옵션 설정 시 주의사항
- 복제본 redis.conf에서도 인증서 설정이 필요함.
- 복제본 redis.conf에서만 tls-replication yes로 설정 하면 됨
728x90
'DataBase > Redis' 카테고리의 다른 글
[Redis]기능 TEST THREADED I/O (0) | 2023.08.07 |
---|---|
[Redis]기능 TEST CLIENTS (0) | 2023.08.07 |
[Redis]Redis Cache (0) | 2023.07.20 |
Redis Spring 연동 및 사용 (0) | 2023.07.20 |
Redis 설정(Security, Client, Memory) (0) | 2023.07.20 |
728x90

Redis TLS/SSL
본 글에서는 Redis TLS/SSL 옵션을 정리하고 TEST 결과를 작성 하였습니다.
사전에 인증서가 필요하기 때문에 인증서 생성은 아래 링크를 참고 하시기 바랍니다.
https://sh-it-work.tistory.com/7
인증서 생성
개인키 발급 및 SSL 인증서 생성 WEB 서비스에 https를 적용할 경우 SSL 인증서를 Verisign, Thawte, GeoTrust등에서 인증서를 발급 받아야 하지만, 이는 비용이 발생하며 실 운용 서버가 아닌 경우 다른 방
sh-it-work.tistory.com
Redis TLS/SSL 옵션
옵 션 | 기본값 | 설 명 | 설정 예시 |
tls-port | - | TLS 수신 포트를 지정 | tls-port 6443 |
tls-cert-file | - | 서버 인증에 사용할 X.509 인증서, 파일은 PEM 형식 | tls-cert-file redis.crt |
tls-key-file | - | 서버 인증에 사용할 X.509 개인 키, 파일은 PEM 형식 | tls-key-file redis.key |
tls-client-cert-file | - | 클라이언트 전용 인증서 파일 | tls-client-cert-file client.crt |
tls-client-key-file | - | 클라이언트 전용 key 파일 | tls-client-key-file client.key |
tls-dh-params-file | - | DH(Diffie-Hellman)키 교환 사용하도록 DH 매개 변수 파일 | tls-dh-params-file redis.dh |
tls-ca-cert-file | - | TLS/SSL 클라이언트 및 피어 인증하도록 CA 인증서 | tls-ca-cert-file ca.crt |
tls-ca-cert-dir | - | CA 파일 디렉토리 | tls-ca-cert-dir /etc/ssl/certs |
tls-auth-clients | yes | 클라이언트 측 인증서 Check 할지 말지 결정하는 옵션 | tls-auth-clients no |
tls-replication | - | Redis 복제본에서 TLS 활성화 설정 | tls-replication yes |
tls-cluster | - | Redis 클러스터 사이 연결 TLS 활성화 설정 | tls-cluster yes |
tls-protocols | - | TLS 프로토콜 설정 | tls-protocols "TLSv1.2 TLSv1.3" |
tls-ciphers | - | TLSv1.2 이하에 대한 허용 암호 구성 | tls-ciphers DEFAULT:!MEDIUM |
tls-ciphersuites | - | TLSv1.3 ciphersutie에 대한 암호 그룹 설정 | tls-ciphersuites TLS_CHACH20_POLY1305_SHA256 |
tls-prefer-server-ciphers | - | 암호 선택 시 서버 설정을 먼저 사용하도록 설정 | tls-prefer-server-ciphers yes |
tls-session-caching | - | TLS 세션 캐싱 지원/비지원 설정 | tls-session-caching no |
tls-session-cache-size | 20480 | 캐시 된 TLS 세션 수 | tls-session-cache-size 5000 |
tls-session-cache-timeout | 300(s) | 캐시 된 TLS 세션 시간 제한 | tls-session-cache-timeout 300 |
Redis TLS/SSL TEST
TEST 환경
SW | Version |
Ubuntu | 22.0.4 |
Redis | 7.0.12 |
1. TLS 기본 설정 TEST
TLS 기본 옵션
port 0
tls-port 6443
tls-cert-file /home/redis/redis/certs/redis.crt
tls-key-file /home/redis/redis/certs/redis.key
tls-ca-cert-file /home/redis/redis/certs/rootca.crt
tls-ca-cert-dir /home/redis/redis/certs
tls-protocols "TLSv1.2 TLSv1.3"
TLS 기본 옵션 TEST
- redis-cli를 통해 6443 port 접속 확인
- Ping 명령어를 통해 서버 동작 확인
$ redis-cli -p 6443 --tls --insecure --cert /home/redis/redis/certs/redis.crt --key /home/redis/redis/certs/redis.key
127.0.0.1:6443> ping
PONG
127.0.0.1:6443>
- 로그 확인
# redis-cli로 부터 tls 정상 접속 된 로그 확인됨
92359:M 03 Aug 2023 11:00:59.987 - Accepted 127.0.0.1:51880
TLS 기본 옵션 설정 시 주의 사항
- port 0을 설정하지 않으면, GENERAL 설정에 port도 같이 Binding 된다.
2. tls-auth-clients 옵션 TEST
- no 설정 시 클라이언트 인증서는 필요하지 않고 허용되지 않는다.
- optional 설정 시 클라이언트 인증서가 허용되고 제공 된 경우 유효해야 하지만 필수는 아니다.
- Default 옵션은 yes이다.
tls-auth-clients 옵션 TEST
- yes 설정
tls-auth-clients yes
- yes 설정 시 redis-cli로 접속할 때 무조건 --cert, --key 옵션을 통해 인증서 파일, key 파일을 알려줘야 한다..
$ redis-cli -p 6443 --tls --insecure --cert /home/redis/redis/certs/redis.crt --key /home/redis/redis/certs/redis.key
- no 설정 시 redis-cli 접속할 때 인증서가 필요하지 않다.
$ redis-cli -p 6443 --tls --insecure
- optional 설정 시 위 2가지 방법으로 모두 접속 가능
$ redis-cli -p 6443 --tls --insecure --cert /home/redis/redis/certs/redis.crt --key /home/redis/redis/certs/redis.key
$ redis-cli -p 6443 --tls --insecure
3. tls-replication 옵션 TEST
- Default 옵션은 no
- 복제본이 마스터로 TLS 연결을 하고싶을 때 yes로 설정함
tls-replication TEST
- 복제본 redis.conf에서 tls-replication yes로 설정
tls-replication yes
- redis-cli를 통해 복제본 서버에 접속
$ redis-cli -h ${REDIS_REPLICATION_HOST} -p ${REPLICATION_PORT} --tls --insecure
- redis-cli 접속 후 복제본에서 마스터 연결
# 접속된 상태 예시
127.0.0.1:6380> replicaof ${MASTER_IP} ${MASTER_PORT}
ok
- replication 연결 확인
mstaer_link_status가 up 이면 연결이 정상적으로 된 것이다
# 예시
127.0.0.1:6380> info replication
# Replication
role:slave
master_host:${MASTER_IP}
master_port:${MASTER_PORT}
master_link_status:up
- 로그 확인
# Slave log
# 마지막에 REPLICA 구성이되어 success 로그 확인 됨
152310:S 03 Aug 2023 16:09:55.032 * Connecting to MASTER 192.168.53.23:6443
152310:S 03 Aug 2023 16:09:55.032 * MASTER <-> REPLICA sync started
...(생략)
152310:S 03 Aug 2023 16:10:00.048 * MASTER <-> REPLICA sync: Finished with success
# Master log
# replica 완료 succeeded 로그 확인됨
151833:M 03 Aug 2023 16:10:00.048 * Streamed RDB transfer with replica 192.168.53.23:6380 succeeded (socket). Waiting for REPLCONF ACK from slave to enable streaming
151833:M 03 Aug 2023 16:10:00.048 * Synchronization with replica 192.168.53.23:6380 succeeded
tls-replication 옵션 설정 시 주의사항
- 복제본 redis.conf에서도 인증서 설정이 필요함.
- 복제본 redis.conf에서만 tls-replication yes로 설정 하면 됨
728x90
'DataBase > Redis' 카테고리의 다른 글
[Redis]기능 TEST THREADED I/O (0) | 2023.08.07 |
---|---|
[Redis]기능 TEST CLIENTS (0) | 2023.08.07 |
[Redis]Redis Cache (0) | 2023.07.20 |
Redis Spring 연동 및 사용 (0) | 2023.07.20 |
Redis 설정(Security, Client, Memory) (0) | 2023.07.20 |