вы можете программно сделать это с помощью Java, реализовав свой собственный X509TrustManager.
public class dummyTrustManager implements X509TrustManager {
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
//do nothing
}
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
// do nothing
}
public X509Certificate[] getAcceptedIssuers() {
//just return an empty issuer
return new X509Certificate[0];
}
}
Затем вы можете использовать этот диспетчер доверия для создания сокета SSL
SSLContext context = SSLContext.getInstance("SSL");
context.init(null, new TrustManager[] { new dummyTrustManager() },
new java.security.SecureRandom());
SSLSocketFactory factory = context.getSocketFactory();
InetAddress addr = InetAddress.getByName(host_);
SSLSocket sock = (SSLSocket)factory.createSocket(addr, port_);
Затем с этим сокетом вы можете просто извлечь сертификат сервера (пут импортировать его
в доверенном хранилище ключей)
SSLSession session = sock.getSession();
Certificate[] certchain = session.getPeerCertificates();