如何让OpenShift上的Spring Boot Jar访问/etc/trusts下的证书?
解决Spring Boot在OpenShift中访问/etc/trusts目录文件的问题
问题核心
报错提示找不到etc/trusts/keystore.p12,是因为直接传入路径时,Spring的ResourceLoader默认会从**classpath(Jar包内部资源)**查找,而/etc/trusts是OpenShift容器的文件系统路径,不属于classpath范围,所以无法定位到文件。
解决方案
在配置的fileLocation路径前加上file:协议前缀,明确告诉ResourceLoader去服务器文件系统中查找资源:
- 正确的路径配置应为:
file:/etc/trusts/keystore.p12和file:/etc/trusts/truststore.p12
你的代码无需修改,保持现有逻辑即可:
val resource: Resource = resourceLoader.getResource(fileLocation) return resource.inputStream
额外验证点
- 确认OpenShift的Config Map已正确挂载到容器的
/etc/trusts目录,可进入容器执行ls /etc/trusts检查文件是否存在 - 确保应用运行的用户对
/etc/trusts目录及文件有读取权限,可通过ls -l /etc/trusts查看权限设置
内容的提问来源于stack exchange,提问作者naptoon
相关产品推荐
相关产品推荐

