我正在尝试运行和测试一个SpringBoot应用程序,该应用程序已打包成zip文件并在Linux虚拟机上解压。zip包含应用程序所需的一切(至少据我所知)。当我尝试执行应用程序时,它会启动,但很快就会失败,因为它无法加载SSH/TLS安全通信所需的密钥库。
我的application.yml如下:
server:
port: 8091
ssl:
enabled: true
protocol: TLS
trust-store-type: JKS
trust-store: classpath:keystore/server.keystore
trust-store-password: <hidden>
key-store-type: JKS
key-store: classpath:keystore/ra/server.keystore
key-store-password: <hidden>
测试系统上的目录结构如下:
[centos@route-assessor route-assessor]$ ls -R
.:
config elastic-apm-agent-1.10.0.jar lib run-route-assessor.sh services-0.0.1-SNAPSHOT.jar
./config:
application.yml keystore log4j2.xml
./config/keystore:
mp ra rg server.keystore
./config/keystore/mp:
server.keystore
./config/keystore/ra:
server.keystore
./config/keystore/rg:
server.keystore
./lib
<dependency jars>
下面是抛出的异常:
[2019-10-23 13:21:31.419] main WARN : context.AnnotationConfigServletWebServerApplicationContext:557 - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Could not load key store 'classpath:keystore/server.keystore'
Spring Boot运行时显然可以看到并访问config
目录,但似乎看不到其中包含的keystore
目录。我需要在application.yml中以不同的方式指定路径,还是需要将密钥存储库文件放在其他地方?
注意:我可以使用该应用程序运行此应用程序。yml配置如eclipse所示,没有任何问题。当然,对于这种情况,所有资源都位于src/main/resources
中。
更新:
根据@borban的建议,我修改了application.yml如下:
key-store: file:config/keystore/ra/server.keystore
trust-store: file:config/keystore/server.keystore
这似乎解决了一个问题,但我还没有走出困境:
[2019-10-23 15:07:17.671] main ERROR: boot.SpringApplication:821 - Application run failed
org.springframework.boot.web.server.WebServerException: Unable to start embedded Jetty server
...
Caused by: java.lang.IllegalStateException: no valid keystore
...
据我所知,我的keystore文件是有效和正确的(我已经在我的Windows开发框中使用了几个月)。它们作为zip分发的一部分被复制。是不是我漏掉了什么?
我也有点担心日志中的一些其他消息。我不确定他们是否有关联,但似乎他们可能是:
[2019-10-23 15:07:10.153] main WARN : resource.Resource:126 - java.lang.IllegalArgumentException: URI is not hierarchical
[2019-10-23 15:07:10.155] main WARN : resource.Resource:126 - java.lang.IllegalArgumentException: URI is not hierarchical
我不记得以前见过他们。
您可以使用maven资源插件将您需要的文件夹添加到插件中:
https://maven.apache.org/plugins/maven-resources-plugin/examples/resource-directory.html
然后使用没有类路径??
您是否试图在类路径之外并从文件系统本身访问此密钥库?从你给出的文件夹结构来看,似乎是这样。如果删除“类路径”前缀,然后适当更新路径,它应该可以工作。
从这篇文章看来,你必须在前面加上“file”
https://maven.apache.org/plugins/maven-resources-plugin/examples/resource-directory.html
我是拉威尔的新手,我正在尝试使用Artisan命令。。。 它显示。。。 Laravel开发服务器已启动:http://127.0.0.1:8000 但是,当我手动输入时,它不会自动启动http://127.0.0.1:8000 它显示了这个错误: RuntimeException未指定应用程序加密密钥。 有什么想法吗?我正在使用Laravel framework 5.5-dev。
在我的项目中,我想使用特定于环境的属性文件。例如,如果我在开发中运行它,它应该使用应用程序。dev.properties,对于生产,它应该使用应用程序。产品属性等等。 我有下面两个文件在我的资源文件夹。 application.properties(用于生产) application.dev.properties(用于开发) 我有一个属性像下面的每个文件。 为了刺激 给德夫 我有一门课,如下所示
我在过去为Azure函数使用了很多秘密,现在我试图使用一个密钥,RSA加密,4096位。这是一个私有的PuTTy.ppk键,我已经将其导出为。pem类型以满足Azure的要求。我有一个Python 3.7应用程序,我已经在其中部署了所需的功能,并尝试在应用程序设置中引用所需的键,下面的语句是: @microsoft.keyvault(secreturi=https://{thevault-addr
问题内容: 我想使用URLFetch服务在Google App Engine应用程序中打开 HTTPS* 连接。为了能够 验证我的应用正在 与之通信 的服务器的SSL证书,我使用了自己的密钥库文件 。我希望在加载我的应用程序时(即在执行任何HTTPS请求之前)在热身请求中读取此文件。密钥库文件是我的WAR文件的一部分。 * 但是,我不能使用这种方法,因为HttpURLConnection在GAE的
我正在使用一个spring启动应用程序,它运行我的src/main/resources/config/application。yml。 当我通过以下方式运行测试用例时: 测试代码仍在运行我的应用程序。要加载属性的yml文件。我想知道是否有可能再运行一个*。运行测试用例时的yml文件。
将私钥加密变换为keystore v3标准格式。 调用: web3.eth.accounts.encrypt(privateKey, password); 参数: privateKey - String: 要加密的私钥. password - String: 用于加密的密码 返回值: Object: 加密后的keystore v3 JSON. 示例代码: web3.eth.accounts.en