https请求单向认证

来源:互联网 发布:rsa算法原理 一 编辑:程序博客网 时间:2024/05/21 09:57

单向认证证书配置相对简单,服务端证书server.cer放在assets目录下,请求配置如下:

截取部分代码

public static synchronized String requestByPost(String urlpath,String requestData) throws IOException {AssetManager am = CommonDataApplication.getInstance().getApplicationContext().getAssets();SSLContext context = null;try {InputStream ins = am.open("server.cer");CertificateFactory cerFactory = CertificateFactory.getInstance("X.509");Certificate cer;try {cer = cerFactory.generateCertificate(ins);} finally {ins.close();}// Create a KeyStore containing our trusted CAsString keyStoreType = KeyStore.getDefaultType();KeyStore keyStore = KeyStore.getInstance(keyStoreType);keyStore.load(null, null);keyStore.setCertificateEntry("ca", cer);// Create a TrustManager that trusts the CAs in our KeyStoreString tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);tmf.init(keyStore);// Create an SSLContext that uses our TrustManagercontext = SSLContext.getInstance("TLS");context.init(null, tmf.getTrustManagers(), null);} catch (Exception e) {e.printStackTrace();}URL url = new URL(urlpath);HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();conn.setSSLSocketFactory(context.getSocketFactory());conn.setDoInput(true);conn.setConnectTimeout(TIMEOUT);