我想从application.properties加载server.ssl.key-store-password和server.ssl.trust-store-password,然后解密Java代码中的密码以用作证书的原始密码。
在application.prop中,我是这样的:
#keystore details
server.ssl.key-store=src\\main\\resources\\serverkeystore.p12
server.ssl.key-store-password=secret
#truststore details
server.ssl.trust-store=src\\main\\resources\\servertruststore.p12
server.ssl.trust-store-password=secret
server.ssl.client-auth=need
但是现在我要更改密码
`
#keystore details
server.ssl.key-store=src\\main\\resources\\serverkeystore.p12
server.ssl.key-store-password=PEgC8MYwNKVUryuVekqa/A==
#truststore details
server.ssl.trust-store=src\\main\\resources\\servertruststore.p12
server.ssl.trust-store-password=PEgC8MYwNKVUryuVekqa/A==
server.ssl.client-auth=need`
然后使用Java代码对此进行解密,并作为输出“秘密”重用以继续进行处理。 我正在尝试通过以下方式将此值重新加载到属性中:
System.setProperty("jdk.tls.client.protocols", "TLSv1.2");
System.setProperty("https.protocols", "TLSv1.2");
System.setProperty("javax.net.ssl.keyStoreType", DEFAULT_TYPE);
System.setProperty("javax.net.ssl.keyStore", serverKeyStorePath);
System.setProperty("javax.net.ssl.keyStorePassword", decryptedKSPassowrd);
System.setProperty("javax.net.ssl.trustStore", serverTrustStorePath);
System.setProperty("javax.net.ssl.trustStorePassword", decryptedTSKPassword);
但是它不起作用,因为它失败,并带有异常:
***************************
APPLICATION FAILED TO START
***************************
Description:
The Tomcat connector configured to listen on port 8443 failed to start. The port may already be in use or the connector may be misconfigured.
对我来说,tomcat第一次使用我提供的属性加载它,然后在tomcat已经运行时尝试重新加载它。 如果我仅使用第一种情况不解密密码,那么它可以正常工作,但是我需要将其加密存储,然后在内部代码中解密。
找不到任何方法或类似的代码来处理此问题。 如何再次传递这些参数?