2016-09-06 4 views
4

Я хочу подключить подключаемый модуль Eclipse к URL-адресу HTTPS, но у вас есть проблема, потому что пользователю нужно будет принять сертификат. Конечно, есть пара tutorials for how to do this in plain Java, но это может быть трудно сделать внутри подключаемого модуля Eclipse, и я думаю, что я изобрел колесо таким образом.Использование Eclipse для подключения к сети

Поскольку Eclipse имеет встроенные инструменты для подключения к сайтам с различными сетевыми протоколами. Примером может служить действие «Установить новое программное обеспечение ...». Инструментарий имеет только preference page, который перечисляет HTTPS отдельно.

В соответствии с Eclipse Help, KeyStore используется как хранилище для сертификатов, используемых для принятия решений о доверии [...] при создании SSL-соединений ». Но я не мог понять, как его использовать.

Так что мой вопрос: как я могу использовать сборку Eclipse для подключения к моему сайту HTTPS?

+0

Существует пример использования прокси-сервис для Eclipse [здесь] (http://blog.vogella.com/2009/12/08/eclipse-rcp-proxy-preference/) –

+0

@ greg-449 Я проверил, что он уже вышел. К сожалению, нет обработки сертификатов, и я уверен, что в какой-то момент Eclipse. –

ответ

0

на основе this answer here я строю свой собственный плагин, который загружает только один сертификат, мне нужно (мне повезло) в его EarlyStartup:

public class EarlyStartup implements IStartup { 

    private static final String ALIAS = "ACME"; 

    @Override 
    public void earlyStartup() { 
     final char[] passphrase = "changeit".toCharArray(); 
     final char separator = File.separatorChar; 
     final File dir = new File(System.getProperty("java.home") + separator + "lib" + separator + "security"); 
     final File file = new File(dir, "cacerts"); 

     try (InputStream certIn = getClass().getResourceAsStream("acme.org.crt"); 
       final InputStream localCertIn = new FileInputStream(file);) { 

      final KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType()); 
      keystore.load(localCertIn, passphrase); 
      if (keystore.containsAlias(ALIAS)) { 
       return; 
      } 

      final CertificateFactory cf = CertificateFactory.getInstance("X.509"); 
      final Certificate cert = cf.generateCertificate(certIn); 
      keystore.setCertificateEntry(ALIAS, cert); 

      try (OutputStream out = new FileOutputStream(file)) { 
       keystore.store(out, passphrase); 
      } 
     } catch (final Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 
Смежные вопросы