我正在研究一个客户端程序(在android中),它需要通过SSL与jboss服务器通信。目前,我已按照http://blog.crazybob.org/2010/02/android-trusting-ssl-certificates.html的说明获取自签名证书并连接到服务器。我想知道这是否可以从java完成,因为每当服务器证书更改时,我必须手动获取证书并将其编译到代码本身。我也注意到android中的谷歌浏览器可以做到这一点。任何想法如何实现这一点。 感谢。
我正在使用此测试代码获取服务器证书但未成功。
public class TestCert {
public static void main(String args[]) throws Exception {
SSLSocketFactory factory = HttpsURLConnection.getDefaultSSLSocketFactory();
SSLSocket socket = (SSLSocket) factory.createSocket(<ip>, <port>);
socket.startHandshake();
SSLSession session = socket.getSession();
java.security.cert.Certificate[] servercerts = session.getPeerCertificates();
List mylist = new ArrayList();
for (int i = 0; i < servercerts.length; i++) {
mylist.add(servercerts[i]);
}
CertificateFactory cf = CertificateFactory.getInstance("X.509");
CertPath cp = cf.generateCertPath(mylist);
FileOutputStream f = new FileOutputStream("/tmp/CertPath.dat");
ObjectOutputStream b = new ObjectOutputStream(f);
b.writeObject(cp);
}
}