无法在程序化服务器上​​重新加载javax.net.ssl.KeyStore.passowrd和server.ssl.trust-store-password

时间:2018-11-20 09:36:28

标签: java ssl keystore truststore mutual-authentication

我想从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已经运行时尝试重新加载它。 如果我仅使用第一种情况不解密密码,那么它可以正常工作,但是我需要将其加密存储,然后在内部代码中解密。

找不到任何方法或类似的代码来处理此问题。 如何再次传递这些参数?

0 个答案:

没有答案