当前位置: 首页 > 知识库问答 >
问题:

Kubernetes机密和Spring Boot配置

贺浩漫
2023-03-14

我们的服务正在kubernetes集群中运行。我正试图通过SSL保护我们的服务。

为此,我将其添加到应用程序中。属性:

security.require-ssl=true 
server.ssl.key-store-type=JKS
server.ssl.key-store=serviceCertificates.jks
server.ssl.key-store-password=${KEYSTORE_PASSWORD}
server.ssl.key-alias=certificate

我想从集群中定义的kubernetes secret获取的密钥库密码
当服务开始运行时,我收到一个错误,密码验证失败:

"ontext.refresh生命周期异常:无法启动组件[连接器[HTTP/1.1-8080]]\n\tatontext.java:553生命周期org.springframework.boot.web.servlet.context.(生命周期ontext.refresh)\n\tatontext.java:140标准org.springframework.boot.连接器(标准pplication.refresh)\n\tatpplication.java:759TomcatWebSorg.springframework.boot.PreviouslyRemvedConnectors(TomcatWebSpplication.refresh)\n\tatpplication.java:395TomcatWebSorg.springframework.boot.(TomcatWebServer.java:198)\n\tatorg.springframework.boot.web.servlet.context.ServletWebServerApplication Context.startWebServer(ServletWebServerApplication Context.java:300)\n\tatorg.springframework.boot.web.servlet.context.ServletWebServerApplication Context.finish刷新(ServletWebServerApplication Context.java:162)\n\tatorg.springframework.context.support.AbstractApplicationorg.apache.catalina.(AbstractApplication Corg.apache.catalina.util.)\n\tatase.startServletWebServerApplication ationCase.java:167(ServletWebServerApplication ationCorg.apache.catalina.core.)\n\tatervice.addSpringAervice.java:225(SpringAorg.springframework.boot.web.embedded.tomcat.)\n\taterver.addSpringAerver.java:256上下文(SpringAorg.springframework.boot.web.embedded.tomcat.)\n\taterver.startSpringA方法。调用(方法。java: 498)\n\tat org. springframework. boot. loader。MainMethod odRunner. run(MainMethod odRunner. java: 48)\n\tat org. springframe. boot. loader。Launcher. Laun(Launcher. java: 87)\n\tat org. springframe. boot. loader。Launcher. Laun(Launcher. java: 50)\n\tat org. springframe. boot. loader。JarLauncher. main(JarLauncher. java: 51)\n由:org. apache. catalina引起。LifeycleException:协议处理程序启动失败\n\tat org. apache. catalina. Connector. start内部(Connector. java: 1020)\n\tat org. apache. catalina. util。LifeycleBase. start(LifeycleBase. java: 150)IOException:Keystore被篡改,或密码不正确\n\tat sun. security. Provider。JavaKeyStore. Engineering Load(JavaKeyStore. java: 780)\n\tat sun. security. Provider。JavaKeyStore$JKS. Engineering Load(JavaKeyStore. java: 56)\n\tat sun. security. Provider。KeyStoreServer. Engineering Load(KeyStoreServer. java: 224)\n\tat sun. security. Provider。JavaKeyStore$DualFormatJKS. Engineering Load(JavaKeyStore. java: 70)\n\tat java. security。KeyStore. load(KeyStore. java: 1445)\n\tat org. apache. tomcat. util. net。SSLUtilBase. getStore(SSLUtilBase. java: 139)\n\tat org. apache. tomcat. util. net。SSLHostr

我的调查:
1。如果我打印代码

    System.out.println("KEYSTORE_PASSWORD: "+ System.getenv("KEYSTORE_PASSWORD"));   

我看到了它的正确值
2。若我在应用程序属性中设置了硬编码的常量密码值,它就会工作,服务就会启动并运行。

因此,我想问题是将秘密值设置为应用程序属性<我们将感谢您的帮助和建议

共有1个答案

武卓
2023-03-14

我认为你的秘密描述中有拼写错误或隐藏字符。您可以执行pod,验证系统属性,还可以尝试使用命令行工具解密密码。

 类似资料:
  • 我有教育问题: 存在具有windows server 2003(AD)的虚拟机,其中包含用户及其密码。已建立与机器的连接(ip:192.168.56.101:389)。 Web应用程序的目的是使用户能够在AD中更改他的密码。 问题:无法配置到windws server 2003的连接。 我从这个教程开始https://spring.io/guides/gs/authenticating-ldap/

  • 我正在库伯内特斯集群上使用Helm,并安装了稳定的Rabbitmq-ha图表。我想从Logstash将数据推送到Rabbitmq中的交换。我正在尝试使用logstash稳定图表。 rabbitmq ha图表创建了一个包含连接密码的密码。我希望能够获得该密码并将其包含在logstash配置中,以便logstash可以连接到该密码。 logstash的ConfigMap是使用值文件中的项进行模板化的。

  • Kubernetes 存储了集群状态、应用配置和密钥等很多不同的数据。而 Kubernetes 也支持集群数据的加密存储。 本部分将会创建加密密钥以及一个用于加密 Kubernetes Secrets 的 加密配置文件。 加密密钥 建立加密密钥: ENCRYPTION_KEY=$(head -c 32 /dev/urandom | base64) 加密配置文件 生成名为 encryption-co

  • 本文向大家介绍SpringBoot Shiro配置自定义密码加密器代码实例,包括了SpringBoot Shiro配置自定义密码加密器代码实例的使用技巧和注意事项,需要的朋友参考一下 shiro主要有三大功能模块: 1. Subject:主体,一般指用户。 2. SecurityManager:安全管理器,管理所有Subject,可以配合内部安全组件。(类似于SpringMVC中的Dispatch

  • 下面是我的python脚本,用于更新一个秘密,以便使用kubectl部署到kubernetes。所以它工作得很好。但是我想创建一个kubernetes cron作业,该作业将运行docker容器来更新kubernetes集群中的秘密。我该怎么做?aws的秘密只持续了12个小时,我必须从集群内重新生成,这样我就可以在吊舱崩溃等情况下拉动它。。。 这是我在kubernetes中可以访问的内部api吗?

  • 我正在使用包含应用程序数据库配置的kubernetes ConfigMap,并且有一个具有数据库密码的秘密。我需要在ConfigMap中使用这个秘密,因此当我尝试在ConfigMap中添加环境变量并从秘密中指定pod部署中的值时,我无法使用密码连接到mysql,因为ConfigMap中的值采用了变量的确切字符串。 还有deployment.yaml 注意:这个秘密是存在的,我可以获得“mysql