gpt4 book ai didi

android - 如何在 Square MockWebServer 中使用 SSL?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:15:22 25 4
gpt4 key购买 nike

我尝试在 Square's MockWebServer 上启用 SSL 模拟我正在测试的 Android 应用程序中的所有网络服务调用。我想启用 SSL 以获取与真实条件下相同的错误。我不想为测试禁用 SSL 或实现忽略 SSL 的 HTTPClient。

在每次请求时,我都会收到此 javax.net.ssl.SSLPeerUnverifiedExceptionecxeption:

org.springframework.web.client.ResourceAccessException: I/O error on POST request for "https://localhost:42451/api/blabla": No peer certificate; nested exception is javax.net.ssl.SSLPeerUnverifiedException: No peer certificate

看来我需要为 MockWebServer 设置一个证书。但是我不知道怎么...

这就是我尝试启用 SSL 的方式:

SSLContext sslContext = new SslContextBuilder(InetAddress.getLocalHost().getHostName()).build();
server.useHttps(sslContext.getSocketFactory(), true);

或者:

SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, null, null);
server.useHttps(sslContext.getSocketFactory(), false);

有人能帮忙吗?

最佳答案

您需要创建自己的 keystore :

keytool -genkey -v -keystore mystore.keystore.jks -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

或查看:https://developer.android.com/studio/publish/app-signing.html

创建 keystore 后,将其加载到您的代码中并按以下方式使用:

        FileInputStream stream = new FileInputStream("mystore.keystore.jks");
char[] serverKeyStorePassword = "yourcode".toCharArray();
KeyStore serverKeyStore = KeyStore.getInstance(KeyStore.getDefaultType());
serverKeyStore.load(stream, serverKeyStorePassword);

String kmfAlgorithm = KeyManagerFactory.getDefaultAlgorithm();
KeyManagerFactory kmf = KeyManagerFactory.getInstance(kmfAlgorithm);
kmf.init(serverKeyStore, serverKeyStorePassword);

TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(kmfAlgorithm);
trustManagerFactory.init(serverKeyStore);

SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(kmf.getKeyManagers(), trustManagerFactory.getTrustManagers(), null);
SSLSocketFactory sf = sslContext.getSocketFactory();
mockWebServer.useHttps(sf, false);

关于android - 如何在 Square MockWebServer 中使用 SSL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34037491/

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