вы можете программно сделать это с помощью 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();
Какой язык программирования вы используете? BTW, если вы действительно не хотите добавить сертификат программно, есть много инструментов, которые могут это сделать без необходимости писать строку кода. – Alexander 2008-09-28 18:34:09
Вы можете решить проблему, получив надлежащий сертификат (подписанный известным ЦС) для сервера. Один недостаток добавления конкретного сертификата в доверительный магазин заключается в том, что если сертификат сервера изменяется, ваше приложение перестает работать до тех пор, пока вы снова не обновите свой магазин доверия. – Alexander 2008-09-28 18:39:43