spring-boot-admin 监控服务 使用自签发ssl证书的问题
前置说明
创建 SpringBoot Admin Server 应用,引入spring-boot-admin-starter-server
依赖,并且在启动类上加上@EnableAdminServer注解
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
</dependency>
然后通过在需要监控的应用中加上
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.3.1</version>
</dependency>
配置启用监控端点,以及 SpringBood Admin Server 的地址
management:
endpoints:
enabled-by-default: true #配置启用所有端点
web:
exposure:
include: "*" #web端暴露所有端点
spring:
boot:
admin:
client:
url: http://localhost:8888 #配置 Admin Server的地址
即可通过SpringBoot Admin Server 应用地址查看服务的实时运行状态
问题
问题一:监控服务的 url 名称
上面的 url 为什么是域名,不是 localhost 或者是内网的 ip 名称
问题二:证书识别问题
服务没有加上自签证书时没有任何问题,但是由于该项目是在内网中运行,并且为了安全,所有的服务都加上了 SSL 证书,在服务启动后,所有的服务都无法成功注册到 SpringBoot Admin Server 中,通过各个地方查找,最后发现需要使用jdk里面的cacerts才行,但是这些证书都是自己使用keytool
生成的,所以需要将自签导入到 jdk 中
解决过程
既然监控的服务的地址不是 ip,那就重新自签一个和该地址相同的别名的证书,但是后面发现,其实此监控的服务的域名是由服务器的 hostname 决定的,要么修改主机名,要么生成证书的别名和主机名一样。
# 使用 crt 和 p12 生成 p12 证书
openssl pkcs12 -export -in client.crt -inkey client.key -out iot.p12 -name "别名"
项目中所用到的证书都是.p12
格式的证书,需要将此格式先转成.cer
格式,先查看证书中的别名信息,用作之后证书的格式转换
keytool -list -v -keystore xxx.p12 -storepass 证书密码
看到 Alias 是啥后,进行证书格式转换
keytool -export -alias 证书别名 -keystore xxx.p12 -storetype PKCS12 -rfc -file xxx.cer
将转换后的证书导入到 jdk 中
keytool -import -trustcacerts -alias 证书别名 -file xxx.cer -keystore $JAVA_HOME/jre/lib/security/cacerts
回车后会提示输入密钥库口令,注意此口令不是证书密码,默认是changeit
,然后会询问是否信任此证书,根据语言环境,输入是或者是yes,此时就会提示证书已添加到密钥库中。
可以查看一下,此时证书是否已经导入到 jdk中
keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit
此时可以看到导入进的证书的信息
证书别名, 日期, trustedCertEntry,
证书指纹 (SHA-256): xxxx
当然如果用不到此证书,想要删除只需执行如下命令即可
Keytool -delete -alias xx -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit
结果
此时启动 jar 包时使用信任的库java -Djavax.net.ssl.trustStore=$JAVA_HOME/jre/lib/security/cacerts -jar xxx.jar
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: