Jar*_*uba 9 java authentication ssl client android
更新:至于我原来的问题,事实证明,调用java.security.KeyStore.getCertificate(别名)确实返回X509Certiciate.但这不是问题.
(请跟我说,我是这个证书的新手.)
我设法连接到我的(自签名)启用SSL的服务器,只要我不需要经过身份验证的客户端.当我确实需要clientAuth我的应用程序产生"例程:SSL3_READ_BYTES:sslv3警报握手失败(外部/ openssl/ssl/s3_pkt.c"......(也在这里描述)...对于一些人来说,治愈是从BKS切换到PKCS12那对我不起作用.
所以现在我正在尝试实现我自己的X509KeyManager(如此处所示),将其交给sslContext.init([keyManager], trustManagers, null).
如果我理解正确,sslContext将向我的keyManager询问给定别名的证书链和/或私钥.(每当它询问选择哪个别名时,我都提供我的硬编码.)
但根据X509KeyManager我应该返回的界面X509Certificate.如何使用密钥库创建一个?
Tom*_*mik 14
您可以使用a KeyStore与客户端证书进行客户端身份验证,而无需显式创建KeyManager.代码应该是这样的:
KeyStore keyStore = KeyStore.getInstance("BKS");
InputStream is = getResources().openRawResource(R.raw.client);
keyStore.load(is, "yourKeyStorePassword".toCharArray());
is.close();
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("X509");
keyManagerFactory.init(keyStore, "yourKeyStorePassword".toCharArray());
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(keyManagerFactory.getKeyManagers(), trustManagers, null);
Run Code Online (Sandbox Code Playgroud)
还要确保您的服务器信任您的客户端证书.
| 归档时间: |
|
| 查看次数: |
9733 次 |
| 最近记录: |