gpt4 book ai didi

android - 在信任库中添加自定义证书

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

我有一个 API 可以集成到 Android 应用程序中。 API 使用双向 ssl 握手。我需要在我的应用程序 TrustStore 中添加服务器证书,并在 Keystore 中添加一个 jks 文件来验证连接握手。

我在 stackoverflow 上搜索了很多,但对任何答案都不满意。

任何人都可以就我的问题提供一些引用或解决方案。

编辑

我正在使用 Http 实现来建立连接。

public static SSLContext getSSLContext(Context context){

try {

CertificateFactory cf = CertificateFactory.getInstance("X.509");
InputStream input_ca_main = new BufferedInputStream(context.getResources().openRawResource(R.raw.main));

Certificate ca_main;

ca_main = cf.generateCertificate(input_ca_main);

System.out.println("ca=" + ((X509Certificate) ca_main).getSubjectDN());

String keyStoreType = KeyStore.getDefaultType();
KeyStore keyStore = KeyStore.getInstance(keyStoreType);
keyStore.load(null, null);
keyStore.setCertificateEntry("ca_main", ca_main);

String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
tmf.init(keyStore);

SSLContext sslcontext = SSLContext.getInstance("TLS");
sslcontext.init(null, tmf.getTrustManagers(), null);
return sslcontext;

}catch (Exception e){
e.printStackTrace();
return null;
}
}

这是我用来在请求中包含证书的内容。但是看完双向ssl的概念后,我发现服务器证书必须在我们的truststore中。

最佳答案

如果您正在寻找要添加到您设备中的受信任证书的服务器证书。恐怕您必须遵循您在其他示例中看到的使用信任库的内容。

如果您正在寻找一种向您的请求添加证书的方法,请尝试以下代码(假设您使用 volley):

KeyStore keyStore = KeyStore.getInstance("PKCS12"); // this will be your certificate files extension.
keyStore.load(
new ByteArrayInputStream(Base64Helper.decodeIntoByteArray(YOUR_CERTIFICATE_HERE),
YOUR_CERT_PASSWORD_HERE);

KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
keyManagerFactory.init(keyStore, YOUR_CERT_PASSWORD);

SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(keyManagerFactory.getKeyManagers(), null, null);
HurlStack hurlStack = new HurlStack(null, sslContext.getSocketFactory());
requestQueue = Volley.newRequestQueue(EMISMobileApplication.getInstance().getAppContext(), hurlStack);

然后使用此请求队列连接回您的服务器。

关于android - 在信任库中添加自定义证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50966632/

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