MZo*_*kov 5 java linux ssl spring tomcat
我正在尝试设置一个简单的 Spring 应用程序以使用 SSL 并将其托管在 Digital Ocean 上。为什么我的应用找不到密钥库文件?
我设置的 Droplet 基于 Ubuntu 18.04。我使用 Letsencrypt 来获取证书和本指南来生成一个 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>
Run Code Online (Sandbox Code Playgroud)
我希望它能够在配置的端口上运行并启动 Web 服务器。但是,我在堆栈跟踪中得到的是:
Caused by: java.io.FileNotFoundException: /root/software/gimmememe/target/keystore.p12 (No such file or directory)
Run Code Online (Sandbox Code Playgroud)
奇怪的是,当我在自己的 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)
Run Code Online (Sandbox Code Playgroud)
我不认为这是 Ubuntu 机器上的权限问题,因为我尝试像这样设置密钥库文件的权限:
-rw-r--r-- 1 root root 4274 Mar 26 18:44 keystore.p12
Run Code Online (Sandbox Code Playgroud)
我正在使用以下命令运行我的 jar 文件(也尝试使用 sudo infront):
java -jar gimme-meme-1.0.0.war
Run Code Online (Sandbox Code Playgroud)
Spring从类路径加载文件,这允许,所以你应该在路径前面加上那个前缀classpath:,例如
server.ssl.key-store : classpath:keystore.p12
Run Code Online (Sandbox Code Playgroud)
或者,如果您使用=符号作为键/值分隔符:
server.ssl.key-store = classpath:keystore.p12
Run Code Online (Sandbox Code Playgroud)
请记住,该值仅在左侧被修剪,因此值后面不能有任何尾随空格。
| 归档时间: |
|
| 查看次数: |
8541 次 |
| 最近记录: |