如何在java中获取服务器证书

时间:2014-12-22 06:24:49

标签: java android ssl self-signed

我正在研究一个客户端程序(在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);
}
}

0 个答案:

没有答案