해결된 질문
24.07.05 13:51 작성
·
189
·
수정됨
0
안녕하세요, 현재 Spring Cloud와 Docker 강의를 보며 개인적으로 Docker 환경에 Eureka 서버를 배포하고 공부 중입니다. 현재 Eureka 서버 및 데이터베이스, 스프링 환경을 Docker 환경에 배포하는 것까지는 완료한 상태입니다. 하지만 문제는 Eureka 서버에서 스프링 서버로의 링크를 클릭하면 "http://2a2bf313bd4f:60000/actuator/info" 이 사이트에서 HTTPS를 지원하지 않기 때문에 경고가 표시됩니다. 이 문제를 어떻게 해결할 수 있는지 궁금합니다.
Eureka 서버에 등록된 정보
링크 정보
현제 docker-compose file 정보 입니다.
services:
spring-cloud-config-service:
build: ./spring-cloud-config-service
container_name: spring-cloud-config-service
ports:
- "8888:8888"
networks:
- my-network
spring-cloud-discovery:
build: ./spring-cloud-discovery
container_name: eureka-server
ports:
- "8761:8761"
networks:
- my-network
environment:
eureka.client.serviceUrl.defaultZone: http://spring-cloud-discovery:8761/eureka/
mysql:
image: mysql:8.0
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD:
MYSQL_DATABASE: employees
ports:
- "3306:3306"
networks:
- my-network
spring-cloud-study-user-service:
build: ./spring-cloud-study-user-service
container_name: spring-cloud-study-user-service
ports:
- "60000:60000"
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/employees
SPRING_DATASOURCE_USERNAME:
SPRING_DATASOURCE_PASSWORD:
SPRING_CLOUD_CONFIG_URI: http://spring-cloud-config-service:8888
eureka.client.serviceUrl.defaultZone: http://spring-cloud-discovery:8761/eureka/
depends_on:
- mysql
- spring-cloud-discovery
- spring-cloud-config-service
networks:
- my-network
networks:
my-network:
driver: bridge
Spring-cloud-study-user-service.yml 파일입니다.
server:
port: 60000
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://mysql:3306/employees
# url: jdbc:mysql://localhost:3306/employees
username:
password:
jpa:
hibernate:
ddl-auto: update
show-sql: true
cloud:
config:
uri: http://config-service:8888
name: spring-cloud-study-user-service
application:
name: spring-cloud-study-user-service
eureka:
instance:
preferIpAddress: true
instance-id: ${spring.application.name}:${spring.application.instance_id:${random.value}}
client:
service-url:
defaultZone: http://127.0.0.1:8761/eureka
fetch-registry: true
register-with-eureka: true
Spring-cloud-discovery yml 파일 정보입니다.
server:
port: 8761
spring:
application:
name: spring-cloud-discovery
eureka:
instance:
hostname: eureka-server
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://127.0.0.1:8761/eureka
server:
enableSelfPreservation: false
답변 2
0
2024. 07. 09. 07:57
안녕하세요, 이도원입니다.
JDK에서 제공되는 keytool을 이용하여 self 인증서를 생성하신 뒤에 아래와 같이 application.yml 파일에 반영해 볼 수 있습니다. 참고로 self 인증서는 어디까지는 Test 용도로만 사용하시는 것이 좋을 것 같습니다.
keytool -genkeypair -alias eureka-server -keyalg RSA -keysize 2048 -validity 365 -keystore eureka-server.jks -storepass changeit
eureka:
client:
serviceUrl:
defaultZone: https://localhost:8761/eureka/
server:
port: 8761
ssl:
enabled: true
key-store: classpath:eureka-server.jks
key-store-password: changeit
key-password: changeit
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
server:
enableSelfPreservation: false
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
Eureka 서버에서 스프링 서버로의 링크 클릭 시 HTTPS를 지원하지 않아 발생하는 경고 문제에 대한 해결책으로는 몇 가지 방법이 있습니다.
먼저, Eureka 서버와 스프링 서버 간의 통신을 HTTPS로 전환해야 합니다. 이를 위해서는 스프링 애플리케이션의 application.yml
파일 또는 application.properties
파일에 SSL 관련 설정을 추가하는 것이 필요합니다. 예를 들어, 아래와 같은 설정을 추가할 수 있습니다.
server:
ssl:
key-store: path/to/keystore.p12 # 키스토어 파일 경로
key-store-password: yourkeystorepassword # 키스토어 패스워드
keyStoreType: PKCS12 # 키스토어 타입
keyAlias: yourkeyalias # 키 별칭
port: 8443 # HTTPS 포트 설정
그리고 Eureka 서버의 설정에서도 스프링 애플리케이션의 등록 주소를 https://
로 시작하는 주소로 변경해야 합니다. 예를 들어, eureka.client.serviceUrl.defaultZone
의 값을 https://
로 시작하는 주소로 수정해야 합니다. 예제의 spring-cloud-study-user-service.yml
파일 내에 있는 eureka.client.serviceUrl.defaultZone
설정을 HTTPS URL로 변경해보세요.
또한, HTTPS 설정이 적용된 후에는 스프링 부트 애플리케이션, Eureka 서버 모두 통신에 사용하는 인증서를 신뢰해야 합니다. 로컬 환경에서 자체 서명된 인증서를 사용하는 경우엔 해당 인증서를 신뢰하는 설정을 추가해야 할 수 있습니다.
HTTPS 설정에 대한 추가적인 정보는 Spring 공식 문서나 관련된 스프링 부트 가이드를 참조하시는 것이 좋습니다.
이 문제를 해결하는 데 있어 HTTPS 설정은 어느 정도 기술적인 이해가 필요하므로, 관련 문서를 차근차근 읽어보시면서 진행해보시기 바랍니다.