我在Spring Boot中有几项服务,可以将自己注册到eureka服务器。
这些服务在http上可以正常工作。但是,当我使用https时,由于SSL验证,客户端注册失败。
我如何在DiscoveryClient中添加自签名的jks文件以信任https证书?
编辑
我的application.yml文件
spring:
application:
name: docker-prototype-user-profile
server:
port: 8301
eureka:
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: https://localhost:8761/eureka/
instance:
hostname: localhost
我的application.properties文件
server.ssl.key-store=classpath:keypair.jks
server.ssl.key-store-password=123456
server.ssl.key-password=123456
这里的jks文件与eureka服务器中的文件相同。 我在所有服务中都对https使用相同的密钥。由于jks文件包含公钥和私钥,因此在这里它有2个用途。第一种是提供此服务的https的私钥。第二,我想将此作为eureka发现客户端中的证书。
keytool -genkeypair \
-keystore keypair.jks \
-dname "CN=OLEKSIYS-W3T, OU=Sun Java System Application Server, O=Sun Microsystems, L=Santa Clara, ST=California, C=US" \
-keypass 123456 \
-storepass 123456 \
-keyalg RSA \
-keysize 2048 \
-alias default \
-ext SAN=DNS:localhost,DNS:docker-prototype,DNS:docker-prototype-authentication,DNS:docker-prototype-eureka-server,DNS:docker-prototype-post-management,DNS:docker-prototype-secure-service,DNS:docker-prototype-user-management,DNS:docker-prototype-user-profile,DNS:docker-prototype-zuul-gateway \
-validity 9999
密钥对是使用上述命令生成的