gpt4 book ai didi

java - 如何将证书添加到 Android 信任库?

转载 作者:太空宇宙 更新时间:2023-11-03 13:48:28 25 4
gpt4 key购买 nike

我有一个专为 Android 设计的客户端应用程序。 Android 应用程序基于 XML 和 Java,我们的 Windows 服务器端应用程序也是如此。问题在于,由于我们现在正在使用 Android,因此我们必须处理信任库。有什么方法可以动态地将证书添加到信任库中吗?

客户端连接代码:

InputStream stream = main.getResources().openRawResource(R.raw.keystore);
KeyStore trustStore;
try {
trustStore = KeyStore.getInstance("BKS");
trustStore.load(stream, "password".toCharArray());
} catch (Exception e) {
e.printStackTrace();
}
SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
try{
clientSocket = (SSLSocket) factory.createSocket(address, port);
}catch (Exception ex){
ex.printStackTrace();
}

服务器端连接代码:

System.setProperty("javax.net.ssl.keyStore", System.getProperty("java.io.tmpdir") + "keystore_30290.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "password");
SSLServerSocketFactory factory = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
try {
server = ((SSLServerSocket)factory.createServerSocket(config.port));
} catch (Exception e) {
e.printStackTrace();
System.out.println("Failed to successfully bind to port "+config.port+".");
System.exit(-1);
}

最佳答案

尝试这样的事情,给定你的trustStore:

KeyManagerFactory kmfactory = KeyManagerFactory.getInstance(
KeyManagerFactory.getDefaultAlgorithm());
kmfactory.init(trustStore, "password".toCharArray());
KeyManager[] keymanagers = kmfactory.getKeyManagers();

TrustManagerFactory tmf=TrustManagerFactory
.getInstance(TrustManagerFactory.getDefaultAlgorithm());

tmf.init(trustStore);

SSLContext sslContext=SSLContext.getInstance("TLSv1.2");

sslContext.init(keymanagers, tmf.getTrustManagers(), new SecureRandom());

SSLSocketFactory factory=sslContext.getSocketFactory();

此代码的最小 API 为 16。

关于java - 如何将证书添加到 Android 信任库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38162503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com