- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 okhttp 在我的 android 应用程序上实现双向 ssl。目前,我已经通过输入流从原始文件夹中读取服务器证书并将其添加到 keystore ,将服务器证书添加到信任库,从而实现了证书固定。我不清楚的是如何添加客户端 key 对以使用相互 ssl 初始化 okhttp 客户端。我当前的代码是;
try {
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(null, null);
InputStream certInputStream = context.getResources().openRawResource(
context.getResources().getIdentifier("server",
"raw", context.getPackageName()));
BufferedInputStream bis = new BufferedInputStream(certInputStream);
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
while (bis.available() > 0) {
Certificate cert = certificateFactory.generateCertificate(bis);
keyStore.setCertificateEntry("s1ha", cert);
}
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init(keyStore);
trustManagers = trustManagerFactory.getTrustManagers();
sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, trustManagers, new SecureRandom());
} catch (Exception e) {
e.printStackTrace();
}
我可以将带有客户端 key 对的 keystore 复制到原始文件夹并打开该 keystore 而不是默认类型并将其传递给信任管理器并构建 okhttp 客户端吗?
最佳答案
如果您可以在应用程序中加载证书,那么您需要的代码大致是
val keyPair: KeyPair = ...
val certificate: X509Certificate = ...
val intermediates: Array<X509Certificate> = ...
val myClientCert = HeldCertificate(keyPair, certificate)
val m = HandshakeCertificates.Builder()
.addPlatformTrustedCertificates()
.heldCertificate(myClientCert, *intermediates)
.build()
val client = OkHttpClient.Builder()
.sslSocketFactory(m.sslSocketFactory(), m.trustManager)
.build()
这会间接将其复制到临时 key 存储中,这就是为什么您需要访问私钥字节的原因,从而降低了整体安全性。
关于android - Android中的OkHttp Mutual SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65283321/
我正在尝试使用 okhttp 在我的 android 应用程序上实现双向 ssl。目前,我已经通过输入流从原始文件夹中读取服务器证书并将其添加到 keystore ,将服务器证书添加到信任库,从而实现
你好 我正在尝试获得两个 friend 之间共享的点赞,并且正在使用以下查询: SELECT source_id, target_id FROM connection WHERE source_id
考虑以下无类型 lambda 演算的玩具表示: Require Import String. Open Scope string_scope. Inductive term : Set := | Va
我正在尝试为 iPhone 应用程序实现相互身份验证。到目前为止,我似乎能够验证服务器信任,并在本地验证我的客户端证书。在 connection:didReceiveAuthenticationCha
是否可以在 Golang 中执行类似“相互”包导入的操作? 比方说我有两个包,A 和 B,具有函数 AFunc 和 BFunc,BFunc2 package A import "B" func AFu
我有一张 table likes , 其中 ID1 喜欢 ID2 ID1 ID2 1025 1101 1247 1468 1316 1304 1501 1934 164
我正在开发一个 Web 服务客户端,它需要与启用了相互身份验证的服务器进行通信。 我已经完成了以下步骤。 将服务器证书(自签名)添加到信任库并使用 SSLSocketFactory 将其设置为 Htt
我有一个在 jetty 服务器上运行的客户端实例。我加载了自己的 CA 证书并在服务器和客户端上工作。当我在握手期间发送证书请求时,我必须为客户端证书指定完整的颁发者 DN,否则客户端无法找到所需的证
我的数据库中有两个表,一个是保存用户信息(users_table)另一个跟踪 friend 用户表: id username avatar 1 max m
我想了解双向 TLS 的工作原理,我有以下示例: I have a client who wants to connect to server "svc1.example.com" 但是服务器有一个
我需要一些有关 Android OkHttp 客户端/服务器应用程序的帮助。问题如下:似乎我的 Android 客户端在收到证书请求后没有向服务器发送任何证书。 这是我的安卓代码: private s
我为 SOAP Web 服务(主要受 this SO answer 影响)开发了一个 Java 7 HTTPS 服务器(我使用 com.sun.net.httpserver.HttpsServer),
在 Android 中设计布局一段时间后,我仍然无法掌握它。结果往往是不可预测的。 我认为这部分归结为一些布局选项不能很好地协同工作。 IE。如果您使用一种指定布局的方式,则您并不打算使用其他方式。
在例子中使用"intermediate join entity " 要找出一个人的 friend 是谁,你必须聚合 friend 关系的所有 friend 目的地,例如: NSSet *persons
我正在尝试使用 Android SDK 获取两个 Facebook 用户的共同好友: Request friendsInCommon = Request.newRestRequest(myFbSess
我目前正在开发一个应用程序来让学生管理他们的类(class),但我真的不知道如何为特定功能设计数据库。与 Facebook 非常相似,客户希望当学生显示当前在特定类(class)中的人员列表时,首先显
我想像这样使用我的脚本: python test.py run python test.py stop 我的代码是这样的: parser = argparse.ArgumentParser() com
我想在 argparse 中实现这样的逻辑: If argument A is selected, the user cannot select arguments B or C. B and C c
我已经在 Go 中成功设置了 TLS 相互身份验证客户端/服务器一段时间,但现在希望进行一些小的调整。 具体来说,我想知道是否有一种方法只需要特定的客户端证书即可进行相互身份验证。 我目前正在使用这样
我正在尝试使用 Facebook Graph API V2.0 获得相互点赞,但它只返回计数.. 这是我得到的输出.. API 网址:https://graph.facebook.com/876378
我是一名优秀的程序员,十分优秀!