java javax.net.ssl.keystore冲突解决?_如何在jar中使用文件作为javax.net.ssl.keystore?

小编典典

仍在实施中,但我相信可以通过InputStream从jar中加载密钥库,并以编程方式显式设置TrustStore(与设置System属性相对)。

得到它的工作!

InputStream keystoreInput = Thread.currentThread().getContextClassLoader()

.getResourceAsStream(/client.ks");

InputStream truststoreInput = Thread.currentThread().getContextClassLoader()

.getResourceAsStream(/client.ts");

setSSLFactories(keystoreInput, "password", truststoreInput);

keystoreInput.close();

truststoreInput.close();

private static void setSSLFactories(InputStream keyStream, String keyStorePassword,

InputStream trustStream) throws Exception

{

// Get keyStore

KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());

// if your store is password protected then declare it (it can be null however)

char[] keyPassword = keyStorePassword.toCharArray();

// load the stream to your store

keyStore.load(keyStream, keyPassword);

// initialize a key manager factory with the key store

KeyManagerFactory keyFactory =

KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());

keyFactory.init(keyStore, keyPassword);

// get the key managers from the factory

KeyManager[] keyManagers = keyFactory.getKeyManagers();

// Now get trustStore

KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());

// if your store is password protected then declare it (it can be null however)

//char[] trustPassword = password.toCharArray();

// load the stream to your store

trustStore.load(trustStream, null);

// initialize a trust manager factory with the trusted store

TrustManagerFactory trustFactory =

TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());

trustFactory.init(trustStore);

// get the trust managers from the factory

TrustManager[] trustManagers = trustFactory.getTrustManagers();

// initialize an ssl context to use these managers and set as default

SSLContext sslContext = SSLContext.getInstance("SSL");

sslContext.init(keyManagers, trustManagers, null);

SSLContext.setDefault(sslContext);

}

2020-09-16


版权声明:本文为weixin_42364833原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。