2008-09-28 3 views
0

Я пытаюсь вызвать веб-сервис с помощью ssl. Как получить соответствующий сертификат сервера, чтобы я мог импортировать его в свою сеть доверия? Я знаю об использовании свойства com.ibm.ssl.enableSignerExchangePrompt из основного метода, но я бы добавил серверный сертификат в свою службу доверия вручную.Сервер cert и клиент Truststore

Я не хочу это свойство установить в любой из моих сервлетов

Любая помощь очень ценится Благодаря Damien

+0

Какой язык программирования вы используете? BTW, если вы действительно не хотите добавить сертификат программно, есть много инструментов, которые могут это сделать без необходимости писать строку кода. – Alexander 2008-09-28 18:34:09

+0

Вы можете решить проблему, получив надлежащий сертификат (подписанный известным ЦС) для сервера. Один недостаток добавления конкретного сертификата в доверительный магазин заключается в том, что если сертификат сервера изменяется, ваше приложение перестает работать до тех пор, пока вы снова не обновите свой магазин доверия. – Alexander 2008-09-28 18:39:43

ответ

2

вы можете программно сделать это с помощью 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(); 
0

При просмотре сайта в вашем веб-браузере вы можете посмотреть на информацию безопасности по нажав значок маленького замка, и в появившемся диалоговом окне вы можете сохранить сертификат.

шаги для Chrome

  1. Нажмите на замок (в адресной строке)
  2. Нажмите «Сертификат Информация»
  3. На вкладке «Подробности» вы можете выбрать «Копировать в файл .. . '.
Смежные вопросы