小编edw*_*win的帖子

使用客户端身份验证在Android上运行时配置SSL/TLS http客户端

以下测试设置在Android模拟器上运行正常.它使用相互身份验证打开与外部服务器的基于SSL/TLS的连接:

ca.crt(验证服务器证书):
----- BEGIN CERTIFICATE -----
BASE64编码 -
-----结束证书-----

client.p12(包括由服务器信任的私有CA签名的客户端证书):PKCS#12格式

运行成功的Java/Android代码:

trustStore = KeyStore.getInstance("bks");
trustStore.load(null, null);
caCertificate = getX509Certificate("/some/path/ca.crt");
trustStore.setCertificateEntry("ca-cert", caCertificate);

keyStore = KeyStore.getInstance("pkcs12");
keyStore.load(null, null);
InputStream is = new FileInputStream("/some/path/client.p12");
keyStore.load(is, "passwd".toCharArray());

TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance("X509");
trustManagerFactory.init(trustStore);
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("X509");
keyManagerFactory.init(keyStore, null);

context = SSLContext.getInstance("TLS");
context.init(keyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers(), new SecureRandom());

URL url = new URL("https://www.backend.com");
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setSSLSocketFactory(context.getSocketFactory());
connection.setDoInput(true);
connection.setDoInput(true);
BufferedReader urlReader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
while ( (inputLine=urlReader.readLine()) != null ){
    System.out.println(inputLine);
} …
Run Code Online (Sandbox Code Playgroud)

authentication ssl android bouncycastle

2
推荐指数
1
解决办法
4410
查看次数

标签 统计

android ×1

authentication ×1

bouncycastle ×1

ssl ×1