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

Spring云从类路径与文件加载密钥库

岑光熙
2023-03-14

我有一个Spring Cloud配置服务器,它使用密钥库解密git服务器中的值。如果我使用文件路径引用密钥库,它会按预期工作并解密{cipher}值。但是,如果我尝试从类路径加载密钥库,它会停止工作,出现以下错误:CipherEnvironmentEncryptor.decrypt-无法解密密钥:用户名(类java.lang.IllegalStateException:无法从存储中加载密钥:类路径资源[mykey. p12])

我在类上设置加密属性,而不是yaml,因为我需要从外部保险库系统中查找不同的密码以获取dev/prod密钥库
构建后,我还可以在target/classes下看到p.12文件,因此在构建过程中它不会被过滤掉。不知道我错过了什么。

    SpringApplication sa = new SpringApplication(Myclass.class);
    Properties springProperties = new Properties();
    springProperties.setProperty("encrypt.enabled", "true");
    springProperties.setProperty("encrypt.key-store.location", "file:///Users/user/IdeaProjects/project/src/main/resources/configuration/mykey.p12"); //working fine
    springProperties.setProperty("encrypt.key-store.location", "classpath:/configuration/mykey.p12");  //does not work
    springProperties.setProperty("encrypt.key-store.type", "PKCS12");
    springProperties.setProperty("encrypt.key-store.password", "password");
    springProperties.setProperty("encrypt.key-store.secret", "password");
    springProperties.setProperty("encrypt.key-store.alias", "vault");

    sa.setDefaultProperties(springProperties);
    sa.run(args);

<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
<version>2.2.0.RELEASE</version>
<name>spring-cloud-config-server</name>

共有1个答案

翟英达
2023-03-14

我的问题实际上与此相关:当移动到资源文件夹时,生成的证书停止工作

我让maven对资源进行过滤配置,这会破坏最终的p12文件。现在,我只是把需要过滤的文件转移到另一个资源目录中,它就工作了。

<resources>
    <resource>
        <directory>src/main/resources</directory>
    </resource>
     <resource>
         <directory>src/main/resources-filtered</directory>
          <filtering>true</filtering>
            <includes>
              <include>*.yml</include>
              <include>logback.xml</include>
            </includes>
      </resource>
  </resources>
 类似资料:
  • 我正在使用最新版本的spring boot和spring cloud config。当我用应用程序启动应用程序时。属性,它工作正常。但是,当我从引导开始时。yml文件,它从Spring cloud下载所有道具,并加载应用程序。类路径中的属性。Spring的云就是这样运作的吗?是否可以将Spring云配置客户端配置为仅从远程云配置而不是从应用程序读取属性。类路径中的属性。 我正在使用, --Spri

  • 问题内容: 我有一个遵循标准目录布局的项目设置(虽然未使用Maven): 本机DLL位于资源文件夹中,而源位于Java文件夹中。resources文件夹是Java类路径的成员。 我现在想加载DLL,而不必设置JRE 选项或设置变量,以便可以通过简单的双击来启动生成的jar文件。 运行jar文件时是否可以将资源文件夹添加到库搜索路径而无需进行其他配置?例如,设置与清单中的相似? 问题答案: 直到今天

  • 在运行jar文件时,有没有可能将资源文件夹添加到库搜索路径中,而不必做额外的配置?例如。使用与清单中的类似的设置?

  • 问题内容: 我是Java的新手,我不确定如何从单独的程序jar中访问位于特定目录中的类文件。 例如,我在/中有一个第三方jar文件,该文件应该加载/mylib/MyClass.class中的MyClass,因此我尝试运行: 但我得到了错误: 我究竟做错了什么? 问题答案: 当您使用,然后 只 在中定义的属性文件里面的文件会影响到类路径。 它还将忽略该参数(或更具体地说:将其解释为)中定义的主类的参

  • 问题内容: 有一个maven项目A。执行mvn全新安装后,将构建项目,并且该jar在我的本地存储库中可用,即 A.jar包含几个类和这些类使用的xml文件 从另一个Maven项目中,我正在调用使用一个XML文件的类中的一种方法。 代码是: 第二个项目位于我的D盘中。在获得绝对路径时,我得到的是\ com \ stackoverflow \ A \ res \ p.xml,这是正确的绝对路径。 但是

  • 问题内容: 我的Java应用程序有问题,特别是从计算机中的某个位置加载图像时。 在这篇文章之后,我使用和来在计算机上加载图像。首先,我将图片()放入源代码中,并且可以正常工作。但是,如果我将图像放到另一个地方(比如说),Java IDE会向我显示一个 这是代码: 问题答案: &不适用于文件路径,但适用于相对于代码库的路径。如果代码库为,则可以找到资源的相对路径为。 通过加载文件之间..differ