kafka 2.8.2버전 기준이며, keystore, truststore jks파일이 존재함을 가정합니다.

 

서버단 설정:

vi ${KAFKA_HOME}/config/server.properties

listeners=SSL://:9092

# 디폴트값
listener.security.protocol.map=PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL

advertised.listeners=SSL://[각 KAFKA 호스트명]:9093

# 추가
ssl.keystore.location=[keystore.jks 위치]
ssl.keystore.password=[keystore 비밀번호]
ssl.key.password=[key 비밀번호]
ssl.truststore.location=[truststore.jks 위치]
ssl.truststore.password=[truststore 비밀번호]
ssl.client.auth=required
# Kafka 서버 브로커들끼리 통신할 방법
security.inter.broker.protocol=SSL
# 빈 값으로 추가
ssl.endpoint.identification.algorithm=

# 수정 후 kafka 서버 재실행필요

 

 

클라이언트단 설정:

# 파일 생성
vi ${KAKFA_HOME}/config/client-ssl-auth.properties

security.protocol=SSL
ssl.truststore.location=[truststore.jks 위치]
ssl.truststore.password=[truststore 비밀번호]
ssl.keystore.location=[keystore.jks 위치]
ssl.keystore.password=[keystore 비밀번호]
ssl.key.password=[key 비밀번호]

# 토픽조회 확인
${KAKFA_HOME}/bin/kafka-topics.sh --list --bootstrap-server\
	# 브로커리스트
	mast01:9093,mast02:9093,mast03:9093\
    --command-config config/client-ssl-auth.properties
    
# 프로듀서실행
${KAKFA_HOME}/bin/kafka-console-producer.sh\
	# 브로커리스트
	--bootstrap-server mast01:9093,mast02:9093,mast03:9093\
    --topic [TOPIC_NAME]\
    --producer.config config/client-ssl-auth.properties

 

kafka 커스텀 프로듀서단:

# 제 상황에서는 개발한 kafka producer의 설정들을 따로 밖의 파일(config.properties)에 지정하고,
# 실행 시 인자로 넘기는 형식입니다. 파일을 넘기는 형식이 아니라면, produver 소스 내 설정해주어야합니다.
vi config.properties
security.protocol=SSL
ssl.truststore.location=[truststore.jks 위치]
ssl.truststore.password=[truststore 비밀번호]
ssl.keystore.location=[keystore.jks 위치]
ssl.keystore.password=[keystore 비밀번호]
ssl.key.password=[key 비밀번호]

 

kafka connetor단:

# 커넥터 실행 시 connect-standalone.properties파일을 바라봅니다.
vi config/connect-standalone.properties
bootstrap.servers=[브로커리스트]
security.protocol=SSL
ssl.truststore.location=[truststore.jks 위치]
ssl.truststore.password=[truststore 비밀번호]
ssl.keystore.location=[keystore.jks 위치]
ssl.keystore.password=[keystore 비밀번호]
ssl.key.password=[key 비밀번호]

producer.bootstrap.servers=[브로커리스트]
producer.security.protocol=SSL
producer.ssl.truststore.location=[truststore.jks 위치]
producer.ssl.truststore.password=[truststore 비밀번호]
producer.ssl.keystore.location=[keystore.jks 위치]
producer.ssl.keystore.password=[keystore 비밀번호]
producer.ssl.key.password=[key 비밀번호]

 

반응형

+ Recent posts