在获取默认SSL上下文之前以编程方式设置密钥库



我的印象是,一旦我在获取SSLContext时设置了系统属性。getDefault((应该会返回具有这些设置属性的SSLContext。在以下情况下,应使用指定的keyStore。不幸的是,事实并非如此。它回退到JVM的默认密钥库。我是不是错过了什么?

System.setProperty("javax.net.ssl.keyStore", "/valida-location/keyStore.jks");
System.setProperty("javax.net.ssl.keyStorePassword","changeit");
System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");
answer = SSLContext.getDefault();

我认为在answer = SSLContext.getDefault();即将执行时,SSLContext相关的类已经加载。我通过放置解决了这个问题

System.setProperty("javax.net.ssl.keyStore", "/valida-location/keyStore.jks"); System.setProperty("javax.net.ssl.keyStorePassword","changeit");在我班的静态块中。这样,在类加载时就设置了一些属性。感谢@dave_thompson_085的提示。

最新更新