我正在尝试设置一个简单的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>
我希望它能在配置的端口上运行并启动一个web服务器。但是,我在堆栈跟踪中得到的是:
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
发布于 2019-04-06 01:36:05
Spring从类路径加载文件,这是允许的,因此您应该在路径前加上该classpath:
,例如
server.ssl.key-store : classpath:keystore.p12
或者,如果您使用=
符号作为键/值分隔符:
server.ssl.key-store = classpath:keystore.p12
请记住,该值仅在左侧修剪,因此在该值之后不能有任何尾随空格。
https://stackoverflow.com/questions/55364537
复制相似问题