java - Spring Java 应用程序找不到 keystore 文件

标签 java linux spring ssl tomcat

我正在尝试设置一个简单的 Spring 应用程序以使用 SSL 并将其托管在 Digital Ocean 上。为什么我的应用找不到 keystore 文件?

我设置的 Droplet 基于 Ubuntu 18.04。我使用 Letsencrypt 获得证书和 this生成 PKCS 文件的指南。我已经设置了我的 application.properties 文件来查看 jar 文件的当前目录,如下所示:

security.require-ssl:true
server.ssl.key-store:keystore.p12
server.ssl.key-store-password:<password>
server.ssl.key-store-type:PKCS12
server.ssl.key-alias:<alias>

我希望它能在配置的端口上运行并启动一个网络服务器。但是,我在堆栈跟踪中得到的是这样的:

Caused by: java.io.FileNotFoundException: /root/software/gimmememe/target/keystore.p12  (No such file or directory)

奇怪的是,当我在自己的 Windows 机器上运行具有相同 keystore.p12 文件的相同 jar 时,它运行良好:

o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 9123 (https) with context path ''
meme.Application                         : Started Application in 4.985 seconds (JVM running for 5.464)

我不认为这是 Ubuntu 机器上的权限问题,因为我尝试像这样设置 keystore 文件的权限:

-rw-r--r-- 1 root root     4274 Mar 26 18:44 keystore.p12

我正在使用以下命令运行我的 jar 文件(也尝试使用 sudo infront):

java -jar gimme-meme-1.0.0.war

最佳答案

Spring 从允许的类路径加载文件,因此您应该在路径前加上 classpath:,例如

server.ssl.key-store : classpath:keystore.p12

或者,如果您使用 = 符号作为键/值分隔符:

server.ssl.key-store = classpath:keystore.p12

请记住,该值仅在左侧被修剪,因此您不能在该值之后有任何尾随空格。

关于java - Spring Java 应用程序找不到 keystore 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55364537/

相关文章:

linux - NXP i.MX6 上的嵌入式 Electron

java - 在基于 EJB 的应用程序中加载 spring 上下文

java - 捕获Spring数据异常

Java:如何使用 org.apache.xerces.parsers.SAXParser 解析 XML 注释?

java - 查找堆深度比 O(n^2) 更快

linux - 捕获信号时如何正确等待 bash 子进程完成

Android:无法在同一手机上执行通过 Linux Deploy 编译的文件

java - 如何在 mule 流中拆分 ArrayList

java - 从json数组中读取数据

java - 对 sling servlet 的发布请求不适用于发布实例