Spring Boot 嵌入式 tomcat 未从类路径加载 SSL 密钥库文件

Nir*_*jan 5 java ssl-certificate spring-boot

我正在为我的应用程序使用 Spring boot 1.2.7,并且作为一项要求,我必须从类路径加载 SSL 证书。所以,我在我的类路径中添加了我的 PKCS12 文件并使用以下代码(在AppInitializer类中加载它:

final String sslKeystoreFilepath = this.getClass().getClassLoader().getResource(sslKeystoreFilename).getFile();
Run Code Online (Sandbox Code Playgroud)

我在这里注意到两件事:

  1. 字符串包含file:在其中。如果我通过带有main方法的普通独立程序运行相同的代码,我将看不到类似file:.

  2. 当我运行 Spring Boot 应用程序(使用生成的 fat jar)时,它抛出异常说:

SEVERE: Failed to load keystore type PKCS12 with path /Users/my_user/Projects/my_app/build/libs/myapp-1.0-SNAPSHOT-dev.jar!/dev_keystore.p12 due to /Users/my_user/Projects/my_app/build/libs/myapp-1.0-SNAPSHOT-dev.jar!/dev_keystore.p12 (No such file or directory) java.io.FileNotFoundException: /Users/my_user/Projects/my_app/build/libs/myapp-1.0-SNAPSHOT-dev.jar!/dev_keystore.p12 (No such file or directory)

我究竟做错了什么?

diy*_*da_ 2

我认为您可以在 .properties 文件中添加此配置,如下所示,而不是获取字符串,

server.ssl.key-store: classpath:dev_keystore.p12
server.ssl.key-store-password: mypassword
server.ssl.keyStoreType: PKCS12
server.ssl.keyAlias: tomcat
Run Code Online (Sandbox Code Playgroud)

如果您需要做现在正在做的事情,请告诉我,我会给出答案