[SPRING] Spring 부팅 application.yml에서 Spring Kafka SSL 설정
SPRINGSpring 부팅 application.yml에서 Spring Kafka SSL 설정
SSL을 사용하기 위해 Kafka 클라이언트와 함께 Spring Boot Application을 설정하려고합니다. 나는 내 keystore.jks와 truststore.jks 파일 시스템 (docker 컨테이너에) 때문에 이것을 가지고있다 : https://github.com/spring-projects/spring-kafka/issues/710
다음은 내 application.yml입니다.
spring:
kafka:
ssl:
key-password: pass
keystore-location: /tmp/kafka.client.keystore.jks
keystore-password: pass
truststore-location: /tmp/kafka.client.truststore.jks
truststore-password: pass
하지만 응용 프로그램을 시작할 때 (도커 컨테이너에서) 다음과 같이 말합니다.
Caused by: java.lang.IllegalStateException: Resource 'class path resource [tmp/kafka.client.keystore.jks]' must be on a file system
[..]
Caused by: java.io.FileNotFoundException: class path resource [tmp/kafka.client.keystore.jks] cannot be resolved to URL because it does not exist
나는 컨테이너를 검사했고 .jks는 / tmp에있다.
.jks를 봄 부팅으로 전달하는 방법을 이해할 수 없습니다.
업데이트 06/07/2018
이게 내 부두 파일이야.
FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY ssl/kafka.client.keystore.jks /tmp
COPY ssl/kafka.client.truststore.jks /tmp
ARG JAR_FILE
ADD ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
해결법
-
==============================
1.논의에 따르면 kafka ssl 구성을 사용하려면 먼저 consumerFactory에서 ssl 등록 정보를 활성화하고 설정해야합니다.
논의에 따르면 kafka ssl 구성을 사용하려면 먼저 consumerFactory에서 ssl 등록 정보를 활성화하고 설정해야합니다.
@Bean public ConsumerFactory<String, ReportingTask> consumerFactory() { Map<String, Object> props = new HashMap<>(); props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers); props.put(ConsumerConfig.GROUP_ID_CONFIG, groupId); props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, JsonSerializable.class); props.put(ConsumerConfig.CLIENT_ID_CONFIG, clientId); props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, enableAutoCommit); props.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, autoCommitInterval); props.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, sessionTimeout); props.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, maxRecords); props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, offSet); if (sslEnabled) { props.put("security.protocol", "SSL"); props.put("ssl.truststore.location", trustStoreLocation); props.put("ssl.truststore.password", trustStorePassword); props.put("ssl.key.password", keyStorePassword); props.put("ssl.keystore.password", keyStorePassword); props.put("ssl.keystore.location", keyStoreLocation); } return new DefaultKafkaConsumerFactory<>(props, new StringDeserializer(), new JsonDeserializer<>(Task.class)); }
인증서를 도커 컨테이너에 복사합니다.
COPY ssl/stage/* /var/lib/kafka/stage/
-
==============================
2.다른 사람이 여전히이 문제를보고있는 경우 file : / 파일 경로 앞에 다음과 같이 입력 해보십시오.
다른 사람이 여전히이 문제를보고있는 경우 file : / 파일 경로 앞에 다음과 같이 입력 해보십시오.
truststorelocation: "file:/tmp/kafka.client.keystore.jks"
오류는 URL이 없다는 불만을 토로합니다. 프로토콜을 추가하면 경로가 URL이됩니다 (기본적으로 말하면됩니다)
from https://stackoverflow.com/questions/51200107/spring-kafka-ssl-setup-in-spring-boot-application-yml by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring 부트 - 별도의 서비스로 임베디드 JMS 브로커 공유 (0) | 2019.05.17 |
---|---|
[SPRING] Angular Js는 Java Spring에서 잘못된 요청을 게시합니다. mvc (0) | 2019.05.17 |
[SPRING] Servlet 3.0 검사 및 구성 요소의 자동로드를 비활성화하는 방법 (0) | 2019.05.17 |
[SPRING] 봄 : mvc : resources에서 POST 요청을 받아들이지 않습니까? 그 문제를 해결하는 방법 (0) | 2019.05.17 |
[SPRING] 컨텍스트 초기화에 실패했습니다. NoSuchMethodError : AntPathMatcher.setCaseSensitive () (0) | 2019.05.17 |