3
我编写android应用程序。 当我从目录文件初始化证书而不是从包中初始化证书时,如何在https
连接中使用证书?使用https中的证书
当我有封装,密码文件,此代码的工作:
KeyStore keyStore = KeyStore.getInstance("PKCS12"); keyStore.load(certificateIs, pass.toCharArray()); KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); kmf.init(keyStore, pass.toCharArray()); SSLContext sc = SSLContext.getInstance("TLS"); sc.init(kmf.getKeyManagers(), trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
但我从DER文件初始化证书:
CertificateFactory cf = CertificateFactory.getInstance("X.509"); X509Certificate certificate = (X509Certificate) cf.generateCertificate(certBytes);
我不知道该怎么过https
连接使用此证书。
是的,android应用程序是客户端,服务器端实现其他公司。 我也有privateKey(in der)。我有证书+私钥。我不知道如何在HttpsURLConnection中使用此按键。使用pkcs,我使用
sc.init(kmf.getKeyManagers(), trustAllCerts, new java.security.SecureRandom());
和HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
。但是当我有私钥和证书分开时。可能我必须在keyManagerFactory中插入privateKey + cert?但我不知道如何: – Peter 2010-10-24 20:13:31你的私钥是如何存储的? – Bruno 2010-10-24 20:15:14
私钥是pem格式,也是pem格式的证书我将其转换为der并使用:
X509Certificate certificate =(X509Certificate)cf.generateCertificate (byteCertDerFormat);
privSpec =新的PKCS8EncodedKeySpec(bytePKDerFormat);
的KeyFactory的KeyFactory = KeyFactory.getInstance( “RSA”);
的privKey =(RSAPrivateKey)keyFactory.generatePrivate(privSpec); – Peter 2010-10-24 20:20:33