сбой дроида при выполнении построения градиента [дубликат]

212
задан JSK NS 16 January 2015 в 13:36
поделиться

20 ответов

  1. Перейдите к URL-адресу вашего браузера Firefox, нажмите цепочку сертификатов HTTPS (рядом с адресом URL). Нажмите "more info" > "security" > "show certificate" > "details" > "export..". Выберите имя и выберите тип файла example.cer. Теперь у вас есть файл с хранилищем ключей, и вы должны добавить его в свой JVM
  2. Определить местоположение файлов cacerts, например. C:\Program Files (x86)\Java\jre1.6.0_22\lib\security\cacerts.
  3. Затем импортируйте файл example.cer в cacerts в командной строке:

keytool -import -alias example -keystore C:\Program Files (x86)\Java\jre1.6.0_22\lib\security\cacerts -file example.cer

Вам будет предложено ввести пароль по умолчанию это changeit

Перезапустите JVM / ПК.

источник: http://magicmonster.com/kb/prg/java/ssl/pkix_path_building_failed.html

270
ответ дан Matthew Graves 1 September 2018 в 02:21
поделиться

Добавление cacerts не помогло мне. После включения журнала с флагом -Djavax.net.debug=all, он узнал java-чтение из jssecacerts.

Наконец-то импортировался файл jssecacerts.

2
ответ дан alk453 1 September 2018 в 02:21
поделиться

Я исправил это, используя метод ниже -

  1. Копировать URL-адрес, который имеет проблему подключения
  2. Перейти к Android Studio-> Настройки-> Настройки Http
  3. В «Test Connection» вставьте этот url и нажмите ok
  4. Вкл. Нажмите «ОК», Android Studio попросит импортировать сертификат этого URL-адреса, импортировать его
  5. Вот и все. Больше ничего не нужно делать, и моя проблема исчезла. Нет необходимости перезапускать студию.
0
ответ дан AndroDev 1 September 2018 в 02:21
поделиться

Я столкнулся с той же проблемой и разрешил ее с помощью следующих простых шагов:

1) Загрузите InstallCert.java из google

2) Скомпилируйте его с помощью javac InstallCert. java

3) Запустите InstallCert.java с помощью java InstallCert.java с именем хоста и https-портом и нажмите «1» при запросе ввода. Он добавит «localhost» в качестве доверенного хранилища ключей и сгенерирует файл с именем «jssecacerts», как показано ниже:

java InstallCert localhost: 443

4) скопировать jssecacerts в $ JAVA_HOME / jre / lib / security folder

Основной источник для решения проблемы здесь:

https://ankurjain26.blogspot.in/2017/11/javaxnetsslsslhandshakeexception.html

С уважением,

Ankur

0
ответ дан Ankur jain 1 September 2018 в 02:21
поделиться

Для меня возникла ошибка сертификата, потому что у меня был скрипач, работающий в фоновом режиме, и это испортило сертификат. Он действует как прокси-сервер так близко и перезапускает eclipse.

0
ответ дан Atihska 1 September 2018 в 02:21
поделиться

Проблема:

У меня возникала следующая ошибка, когда я пытаюсь запустить mvn clean install в моем проекте и через Netbeans IDE clean and build option. Эта проблема возникает из-за того, что сертификат недоступен при загрузке через командную строку NET beans IDE / via, но можно загрузить файлы через браузер.

Ошибка:

Caused by: org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact com.java.project:product:jar:1.0.32 from/to repo-local (https://url/local-repo): sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target  

Разрешение:

1. Загрузите сертификат соответствующего Url:

  • Запустите IE с помощью «run as adminstrator» (в противном случае мы не сможем загрузить сертификат)
  • Введите URL-адрес в IE-> https: // url / local-repo (В моем случае этот url имел ненадежный сертификат .)
  • Загрузите сертификат по клик по ошибке сертификата -> просмотреть сертификат
  • вкладка «Выбрать детали» -> копировать в файл -> следующий -> выбрать «закодированный DER двоичный файл X.509 (.CER)
  • сохранить сертификат в каком-либо месте, например: c: /user/sheldon/desktop/product.cer
  • Поздравляем! вы успешно загрузили сертификат для сайта

2. Теперь установите хранилище ключей, чтобы устранить проблему.

  • Запустите команду keytool, чтобы добавить загруженное хранилище ключей в существующий файл сертификата.
  • Команда: команда ниже в папке bin jdk (JAVA_HOME).

C: \ Program Files \ Java \ jdk1.8.0_141 \ jre \ bin> keytool -importcert -file "C: / user / shel don / desktop / product.cer "-alias product -keystore" C: / Program Files / Java / jdk1.8.0_141 / jre / lib / security / cacerts ".

  • Вам будет предложено ввести пароль. Введите пароль: введите «changeit» еще раз для «Доверяйте этому сертификату? [No]:», введите «yes»

Примеры команд командной строки / вывод:

keytool -importcert -file "C:/Users/sheldon/Desktop/product.cer" -alias product -keystore "C:/Program iles/Java/jdk1.8.0_141/jre/lib/security/cacerts"
Enter keystore password:
Trust this certificate? [no]:  yes
Certificate was added to keystore
  • Согласие! теперь вы должны были избавиться от ошибки «Не удалось создать PKIX-путь: ошибка sun.security.provider.certpath.SunCertPathBuilderException» в вашей среде IDE NetBeans.
4
ответ дан Barani r 1 September 2018 в 02:21
поделиться

Я хотел импортировать сертификат для smtp.gmail.com

. Только решение для меня было 1. Введите команду для просмотра этого сертификата

D: \ openssl \ bin \ openssl.exe s_client -connect smtp.gmail.com:465

  1. Скопируйте и сохраните строки между «----- BEGIN CERTIFICATE -----» и "----- END CERTIFICATE -----" в файл gmail.cer
  2. Запустить keytool -import -alias smtp.gmail.com -keystore "% JAVA_HOME% / jre / lib / security / cacerts "-file C: \ Users \ Admin \ Desktop \ gmail.cer
  3. Введите пароль chageit
  4. Нажмите« Да », чтобы импортировать сертификат
  5. Перезапустить java

теперь запустите команду, и вам хорошо идти

6
ответ дан dazito 1 September 2018 в 02:21
поделиться

целей:

  1. использовать https-соединения
  2. проверить SSL-цепочки
  3. не обрабатывать cacerts
  4. добавить сертификат в runtime
  5. не потерять сертификаты от cacerts

Как это сделать:

  1. определить собственное хранилище ключей
  2. My Keystore

  3. redefine SSL default context с нашим пользовательским классом
  4. ???
  5. profit

wrapper file:

public class CertificateManager {

    private final static Logger logger = Logger.getLogger(CertificateManager.class);

    private String keyStoreLocation;
    private String keyStorePassword;
    private X509TrustManager myTrustManager;
    private static KeyStore myTrustStore;

    public CertificateManager(String keyStoreLocation, String keyStorePassword) throws Exception {
        this.keyStoreLocation = keyStoreLocation;
        this.keyStorePassword = keyStorePassword;
        myTrustStore = createKeyStore(keyStoreLocation, keyStorePassword);
    }

    public void addCustomCertificate(String certFileName, String certificateAlias)
            throws Exception {
        TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
        tmf.init((KeyStore) null);
        Certificate certificate = myTrustStore.getCertificate(certificateAlias);
        if (certificate == null) {
            logger.info("Certificate not exists");
            addCertificate(certFileName, certificateAlias);
        } else {
            logger.info("Certificate exists");
        }
        tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
        tmf.init(myTrustStore);
        for (TrustManager tm : tmf.getTrustManagers()) {
            if (tm instanceof X509TrustManager) {
                setMytrustManager((X509TrustManager) tm);
                logger.info("Trust manager found");
                break;
            }
        }
    }

    private InputStream fullStream(String fname) throws IOException {
        ClassLoader classLoader = getClass().getClassLoader();
        InputStream resource = classLoader.getResourceAsStream(fname);
        try {
            if (resource != null) {
                DataInputStream dis = new DataInputStream(resource);
                byte[] bytes = new byte[dis.available()];
                dis.readFully(bytes);
                return new ByteArrayInputStream(bytes);
            } else {
                logger.info("resource not found");
            }
        } catch (Exception e) {
            logger.error("exception in certificate fetching as resource", e);
        }
        return null;
    }

    public static KeyStore createKeyStore(String keystore, String pass) throws Exception {
        try {
            InputStream in = CertificateManager.class.getClass().getResourceAsStream(keystore);
            KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
            keyStore.load(in, pass.toCharArray());
            logger.info("Keystore was created from resource file");
            return keyStore;
        } catch (Exception e) {
            logger.info("Fail to create keystore from resource file");
        }

        File file = new File(keystore);
        KeyStore keyStore = KeyStore.getInstance("JKS");
        if (file.exists()) {
            keyStore.load(new FileInputStream(file), pass.toCharArray());
            logger.info("Default keystore loaded");
        } else {
            keyStore.load(null, null);
            keyStore.store(new FileOutputStream(file), pass.toCharArray());
            logger.info("New keystore created");
        }
        return keyStore;
    }

    private void addCertificate(String certFileName, String certificateAlias) throws CertificateException,
            IOException, KeyStoreException, NoSuchAlgorithmException {
        CertificateFactory cf = CertificateFactory.getInstance("X.509");
        InputStream certStream = fullStream(certFileName);
        Certificate certs = cf.generateCertificate(certStream);
        myTrustStore.setCertificateEntry(certificateAlias, certs);
        FileOutputStream out = new FileOutputStream(getKeyStoreLocation());
        myTrustStore.store(out, getKeyStorePassword().toCharArray());
        out.close();
        logger.info("Certificate pushed");
    }

    public String getKeyStoreLocation() {
        return keyStoreLocation;
    }

    public String getKeyStorePassword() {
        return keyStorePassword;
    }
    public X509TrustManager getMytrustManager() {
        return myTrustManager;
    }
    public void setMytrustManager(X509TrustManager myTrustManager) {
        this.myTrustManager = myTrustManager;
    }
}

Этот класс будет создавать хранилище ключей, если это необходимо, и сможет управлять сертификатами внутри него. Теперь класс для контекста SSL:

public class CustomTrustManager implements X509TrustManager {

    private final static Logger logger = Logger.getLogger(CertificateManager.class);

    private static SSLSocketFactory socketFactory;
    private static CustomTrustManager instance = new CustomTrustManager();
    private static List<CertificateManager> register = new ArrayList<>();

    public static CustomTrustManager getInstance() {
        return instance;
    }

    private X509TrustManager defaultTm;

    public void register(CertificateManager certificateManager) {
        for(CertificateManager manager : register) {
            if(manager == certificateManager) {
                logger.info("Certificate manager already registered");
                return;
            }
        }
        register.add(certificateManager);
        logger.info("New Certificate manager registered");
    }

    private CustomTrustManager() {
        try {
            String algorithm = TrustManagerFactory.getDefaultAlgorithm();
            TrustManagerFactory tmf = TrustManagerFactory.getInstance(algorithm);

            tmf.init((KeyStore) null);
            boolean found = false;
            for (TrustManager tm : tmf.getTrustManagers()) {
                if (tm instanceof X509TrustManager) {
                    defaultTm = (X509TrustManager) tm;
                    found = true;
                    break;
                }
            }
            if(found) {
                logger.info("Default trust manager found");
            } else {
                logger.warn("Default trust manager was not found");
            }

            SSLContext sslContext = SSLContext.getInstance("TLS");
            sslContext.init(null, new TrustManager[]{this}, null);
            SSLContext.setDefault(sslContext);
            socketFactory = sslContext.getSocketFactory();
            HttpsURLConnection.setDefaultSSLSocketFactory(socketFactory);


            logger.info("Custom trust manager was set");
        } catch (NoSuchAlgorithmException | KeyManagementException | KeyStoreException e) {
            logger.warn("Custom trust manager can't be set");
            e.printStackTrace();
        }
    }

    @Override
    public X509Certificate[] getAcceptedIssuers() {
        List<X509Certificate> out = new ArrayList<>();
        if (defaultTm != null) {
            out.addAll(Arrays.asList(defaultTm.getAcceptedIssuers()));
        }
        int defaultCount = out.size();
        logger.info("Default trust manager contain " + defaultCount + " certficates");
        for(CertificateManager manager : register) {
            X509TrustManager customTrustManager = manager.getMytrustManager();
            X509Certificate[] issuers = customTrustManager.getAcceptedIssuers();
            out.addAll(Arrays.asList(issuers));
        }
        logger.info("Custom trust managers contain " + (out.size() - defaultCount) + " certficates");
        X509Certificate[] arrayOut = new X509Certificate[out.size()];
        return out.toArray(arrayOut);
    }

    @Override
    public void checkServerTrusted(X509Certificate[] chain,
                                   String authType) throws CertificateException {
        for(CertificateManager certificateManager : register) {
            X509TrustManager customTrustManager = certificateManager.getMytrustManager();
            try {
                customTrustManager.checkServerTrusted(chain, authType);
                logger.info("Certificate chain (server) was aproved by custom trust manager");
                return;
            } catch (Exception e) {
            }
        }
        if (defaultTm != null) {
            defaultTm.checkServerTrusted(chain, authType);
            logger.info("Certificate chain (server) was aproved by default trust manager");
        } else {
            logger.info("Certificate chain (server) was rejected");
            throw new CertificateException("Can't check server trusted certificate.");
        }
    }

    @Override
    public void checkClientTrusted(X509Certificate[] chain,
                                   String authType) throws CertificateException {
        try {
            if (defaultTm != null) {
                defaultTm.checkClientTrusted(chain, authType);
                logger.info("Certificate chain (client) was aproved by default trust manager");
            } else {
                throw new NullPointerException();
            }
        } catch (Exception e) {
            for(CertificateManager certificateManager : register) {
                X509TrustManager customTrustManager = certificateManager.getMytrustManager();
                try {
                    customTrustManager.checkClientTrusted(chain, authType);
                    logger.info("Certificate chain (client) was aproved by custom trust manager");
                    return;
                } catch (Exception e1) {
                }
            }
            logger.info("Certificate chain (client) was rejected");
            throw new CertificateException("Can't check client trusted certificate.");
        }
    }

    public SSLSocketFactory getSocketFactory() {
        return socketFactory;
    }
}

Этот класс сделан как singleton, потому что разрешен только один контекст defaultSSL. Итак, теперь использование:

            CertificateManager certificateManager = new CertificateManager("C:\\myapplication\\mykeystore.jks", "changeit");
            String certificatePath = "C:\\myapplication\\public_key_for_your_ssl_service.crt";
            try {
                certificateManager.addCustomCertificate(certificatePath, "alias_for_public_key_for_your_ssl_service");
            } catch (Exception e) {
                log.error("Can't add custom certificate");
                e.printStackTrace();
            }
            CustomTrustManager.getInstance().register(certificateManager);

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

-1
ответ дан degr 1 September 2018 в 02:21
поделиться

Это дополнение к ответу https://stackoverflow.com/a/36427118/1491414 . Спасибо @MagGGG

  • Пожалуйста, убедитесь, что у вас есть разрешение администратора
  • Пожалуйста, используйте двойные кавычки для пути хранилища ключей (-keystore C: \ Program Files (x86) \ Java \ jre1 .6.0_22 \ lib \ security \ cacerts "), потому что в ОС Windows по умолчанию устанавливается местоположение файлов программы, и вы получите сообщение об ошибке из-за пробела между программными файлами.
0
ответ дан Ganesa Vijayakumar 1 September 2018 в 02:21
поделиться

После многих часов, пытаясь создать файлы сертификатов, чтобы моя установка на Java 6 работала с новым сертификатом twitter, я, наконец, наткнулся на невероятно простое решение, заложенное в комментарии на одной из досок объявлений. Просто скопируйте файл cacerts из установки Java 7 и перезапишите его в вашей версии Java 6. Наверное, лучше сначала сделать резервную копию файла cacerts, но тогда вы просто скопируете новый и BOOM! он просто работает.

Обратите внимание, что я фактически скопировал файл cacerts Windows на установку Linux, и он работал нормально.

Файл находится в jre/lib/security/cacerts как в старой, так и в новые установки jdk для Java.

Надеюсь, это сэкономит время на обострение.

63
ответ дан Jeremy Goodell 1 September 2018 в 02:21
поделиться

Если вы превысили ошибку с помощью программного обеспечения atlassian ex. jira

2018-08-18 11:35:00,312 Caesium-1-4 WARN anonymous    Default Mail Handler [c.a.mail.incoming.mailfetcherservice] Default Mail Handler[10001]: javax.mail.MessagingException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target while connecting to host 'imap.xyz.pl' as user 'jira@xyz.pl' via protocol 'imaps, caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

вы можете добавить сертификаты в его доверенное хранилище ключей (change missing_ca для правильного имени сертификата):

keytool -importcert -file missing_ca.crt -alias missing_ca -keystore /opt/atlassian/jira/jre/lib/security/cacerts

Если вас попросят ввести пароль changeit и подтвердите y

После этого просто перезапустите jira.

0
ответ дан Karol Murawski 1 September 2018 в 02:21
поделиться

Здесь обычно такое исключение возникает, когда в PATH доверенного сертификата существует несоответствие. Проверьте конфигурацию или путь, где требуется сертификат сервера для защищенной связи.

0
ответ дан ketan 1 September 2018 в 02:21
поделиться
[Д2] 1. Проверьте сертификат

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

2. Установите последние версии JRE и JDK

Новые версии обычно поставляются с обновленным набором доверенных сертификатов.

Также, если это возможно, удалите старые версии. Это приведет к ошибкам неправильной конфигурации.

3. Проверьте свою конфигурацию:

  • Проверьте, где указана переменная окружения JAVA_HOME.
  • Проверьте, какую версию java вы используете для запуска программы. В IntelliJ проверьте: Файл -> Структура проекта ... -> Настройки проекта -> Проект -> Проект SDK: Файл -> Структура проекта ... -> Настройки платформы -> SDK

4. Скопируйте все хранилище ключей из новой версии Java

Если вы разрабатываете под JDK, отличную от последней доступной, попробуйте заменить файл %JAVA_HOME%/jre/lib/security/cacerts на новый с последней установленной JRE (сначала сделайте резервную копию ), как @ jeremy-goodell предлагает в своем ответе

5. Добавить сертификат (ы) в хранилище ключей

Если ничто из вышеизложенного не решит вашу проблему, используйте keytool для сохранения сертификата (ов) в хранилище ключей Java:

keytool -trustcacerts -keystore "%JAVA_HOME%jre\lib\security\cacerts" -storepass changeit -importcert -alias <alias_name> -file <path_to_crt_file>

Файл с сертификатом можно получить из браузера, как @MagGGG предлагает в своем ответе .

Примечание 1: вам может потребоваться повторить это для каждого сертификата в цепочке сертификата вашего сайта. Начните с корня.

Примечание 2: <alias_name> должно быть уникальным среди ключей в хранилище, или keytool покажет ошибку.

Чтобы получить список всех сертификаты в магазине, который вы можете запустить:

keytool -list -trustcacerts -keystore "%JAVA_HOME%jre\lib\security\cacerts" -storepass changeit

Если что-то пойдет не так, это поможет вам удалить сертификат из магазина:

keytool -delete -alias <alias_name> -keystore "%JAVA_HOME%jre\lib\security\cacerts" -storepass changeit
5
ответ дан Lu55 1 September 2018 в 02:21
поделиться

У меня была немного другая ситуация, когда в моей системе присутствовали как JDK, так и JRE 1.8.0_112.

Я импортировал новые сертификаты CA в [JDK_FOLDER]\jre\lib\security\cacerts, используя уже известную команду:

keytool -import -trustcacerts -keystore cacerts -alias <new_ca_alias> -file <path_to_ca_cert_file>

Тем не менее, я все равно не смог получить то же самое PKIX path building ошибка.

Я добавил отладочную информацию в CLI java, используя java -Djavax.net.debug=all ... > debug.log. В файле debug.log строка, начинающаяся с trustStore: , фактически указывает на хранилище cacerts, найденное в [JRE_FOLDER]\lib\security\cacerts.

В моем случае решение заключалось в том, чтобы скопировать файл cacerts, используемый JDK (который добавил новые CA), поверх того, который использовался JRE, и это устранило проблему.

10
ответ дан M. F. 1 September 2018 в 02:21
поделиться

МОЙ подход к пользовательскому интерфейсу:

  1. Загрузить http://www.keystore-explorer.org/
  2. Открыть $ JAVA_HOME / jre / lib / security / cacerts
  3. введите PW: changeit (может быть изменен на Mac)
  4. Импортировать ваш .crt-файл

CMD-Line:

  1. keytool -importcert -file jetty.crt -alias jetty -keystore $ JAVA_HOME / jre / lib / security / cacerts
  2. введите PW: changeit (может быть изменено на Mac )
15
ответ дан Mike Mitterer 1 September 2018 в 02:21
поделиться

Это не ответ на Твиттер, но это вопрос, который возникает при поиске этой ошибки. Если ваша система получает эту ошибку при подключении к веб-сайту, который, как представляется, имеет действительный сертификат при просмотре в веб-браузере, это, вероятно, означает, что веб-сайт имеет незавершенную цепочку сертификатов.

Для краткого изложения проблемы: органы сертификации не используют свой корневой сертификат для подписи только какого-либо старого сертификата. Вместо этого они (обычно) подписывают промежуточные сертификаты, которые также имеют установленный флаг центра сертификации (то есть разрешены для подписания сертификатов). Затем, когда вы покупаете сертификат из ЦС, они подписывают ваш CSR с одним из этих промежуточных сертификатов.

В вашем хранилище доверия Java скорее всего есть только Root Cert, а не промежуточные.

Неправильно сконфигурированный сайт может вернуть только свой подписанный сертификат. Проблема: он был подписан с промежуточным сертификатом, который не находится в вашем магазине доверия. Браузеры справятся с этой проблемой, загрузив или используя промежуточный сертификат с кешем; это максимизирует совместимость с сайтом. Однако Java и инструменты, такие как OpenSSL, не будут. И это вызовет ошибку в вопросе.

Вы можете проверить это подозрение, используя Qualys SSL Test . Если вы запустили это на сайте, и он говорит:

Цепочка сертификата этого сервера неполна.

, который подтверждает это. Вы также можете увидеть это, посмотрев пути сертификации и увидев текст Extra Download .

Как это исправить: администратору сервера необходимо настроить веб-сервер для возврата промежуточного сертификаты. Например, для Comodo это файл .ca-bundle пригодится. Например, в конфигурации Apache с mod_ssl вы должны использовать настройку конфигурации SSLCertificateChainFile. Для nginx вам необходимо объединить промежуточные сертификаты и подписанный сертификат и использовать их в конфигурации SSL-сертификата. Вы можете найти больше, выполнив поиск «незавершенной цепи сертификатов» в Интернете.

2
ответ дан Reid 1 September 2018 в 02:21
поделиться

Я столкнулся с этим вопросом, пытаясь установить плагин Cucumber-Eclipse в Eclipse через сайт обновлений. Я получил ту же ошибку SunCertPathBuilderException:

Unable to read repository at http://cucumber.io/cucumber-eclipse/update-site/content.xml.
    Unable to read repository at http://cucumber.io/cucumber-eclipse/update-site/content.xml.
    sun.security.validator.ValidatorException: PKIX path building failed: 
   sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Хотя некоторые из других ответов являются подходящими и полезными для данной ситуации, они тем не менее бесполезны и вводят в заблуждение для моей проблемы.

В моем случае проблема заключалась в том, что URL-адрес, предоставленный для сайта обновлений:

https://cucumber.io/cucumber-eclipse/update -site

Однако при навигации по нему через браузер он перенаправляется (обратите внимание на добавленный «.github»):

http://cucumber.github.io/cucumber-eclipse/update-site/

Таким образом, разрешение состоит в том, чтобы просто использовать перенаправленную версию URL сайта обновления при добавлении сайта обновления в eclipse.

2
ответ дан royfripple 1 September 2018 в 02:21
поделиться

Я наткнулся на эту проблему, которая потребовала много часов исследований для исправления, особенно с автогенерированными сертификатами, которые, в отличие от официальных, довольно сложны, и Java им не нравится.

Пожалуйста проверьте следующую ссылку: Решите проблему с сертификатами в Java

В основном вам нужно добавить сертификат с сервера в сертификаты Java Home.

  1. Создайте или получите свой сертификат и настройте Tomcat для его использования в Servers.xml
  2. Загрузите исходный код Java класса InstallCert и выполните его, пока сервер , предоставляя следующие аргументы server[:port]. Пароль не требуется, поскольку исходный пароль работает для сертификатов Java («changeit»).
  3. Программа будет подключаться к серверу, а Java будет генерировать исключение, он проанализирует сертификат, предоставленный сервером и разрешить вам создать файл jssecerts внутри каталога, в котором вы выполнили программу (если выполняется из Eclipse, убедитесь, что вы настроили рабочий каталог в Run -> Configurations).
  4. Вручную скопируйте этот файл в $JAVA_HOME/jre/lib/security

После выполнения этих шагов соединения с сертификатом больше не будут генерировать исключения в Java.

Важный исходный код и он исчез из (Sun ) Блоги Oracle, единственная страница, на которой я нашел ее, была на ссылке, поэтому я прикрепляю ее в ответе для любой ссылки.

/*
 * Copyright 2006 Sun Microsystems, Inc.  All Rights Reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 *   - Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
 *
 *   - Redistributions in binary form must reproduce the above copyright
 *     notice, this list of conditions and the following disclaimer in the
 *     documentation and/or other materials provided with the distribution.
 *
 *   - Neither the name of Sun Microsystems nor the names of its
 *     contributors may be used to endorse or promote products derived
 *     from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
/**
 * Originally from:
 * http://blogs.sun.com/andreas/resource/InstallCert.java
 * Use:
 * java InstallCert hostname
 * Example:
 *% java InstallCert ecc.fedora.redhat.com
 */

import javax.net.ssl.*;
import java.io.*;
import java.security.KeyStore;
import java.security.MessageDigest;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

/**
 * Class used to add the server's certificate to the KeyStore
 * with your trusted certificates.
 */
public class InstallCert {

    public static void main(String[] args) throws Exception {
        String host;
        int port;
        char[] passphrase;
        if ((args.length == 1) || (args.length == 2)) {
            String[] c = args[0].split(":");
            host = c[0];
            port = (c.length == 1) ? 443 : Integer.parseInt(c[1]);
            String p = (args.length == 1) ? "changeit" : args[1];
            passphrase = p.toCharArray();
        } else {
            System.out.println("Usage: java InstallCert [:port] [passphrase]");
            return;
        }

        File file = new File("jssecacerts");
        if (file.isFile() == false) {
            char SEP = File.separatorChar;
            File dir = new File(System.getProperty("java.home") + SEP
                    + "lib" + SEP + "security");
            file = new File(dir, "jssecacerts");
            if (file.isFile() == false) {
                file = new File(dir, "cacerts");
            }
        }
        System.out.println("Loading KeyStore " + file + "...");
        InputStream in = new FileInputStream(file);
        KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
        ks.load(in, passphrase);
        in.close();

        SSLContext context = SSLContext.getInstance("TLS");
        TrustManagerFactory tmf =
                TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
        tmf.init(ks);
        X509TrustManager defaultTrustManager = (X509TrustManager) tmf.getTrustManagers()[0];
        SavingTrustManager tm = new SavingTrustManager(defaultTrustManager);
        context.init(null, new TrustManager[]{tm}, null);
        SSLSocketFactory factory = context.getSocketFactory();

        System.out.println("Opening connection to " + host + ":" + port + "...");
        SSLSocket socket = (SSLSocket) factory.createSocket(host, port);
        socket.setSoTimeout(10000);
        try {
            System.out.println("Starting SSL handshake...");
            socket.startHandshake();
            socket.close();
            System.out.println();
            System.out.println("No errors, certificate is already trusted");
        } catch (SSLException e) {
            System.out.println();
            e.printStackTrace(System.out);
        }

        X509Certificate[] chain = tm.chain;
        if (chain == null) {
            System.out.println("Could not obtain server certificate chain");
            return;
        }

        BufferedReader reader =
                new BufferedReader(new InputStreamReader(System.in));

        System.out.println();
        System.out.println("Server sent " + chain.length + " certificate(s):");
        System.out.println();
        MessageDigest sha1 = MessageDigest.getInstance("SHA1");
        MessageDigest md5 = MessageDigest.getInstance("MD5");
        for (int i = 0; i < chain.length; i++) {
            X509Certificate cert = chain[i];
            System.out.println
                    (" " + (i + 1) + " Subject " + cert.getSubjectDN());
            System.out.println("   Issuer  " + cert.getIssuerDN());
            sha1.update(cert.getEncoded());
            System.out.println("   sha1    " + toHexString(sha1.digest()));
            md5.update(cert.getEncoded());
            System.out.println("   md5     " + toHexString(md5.digest()));
            System.out.println();
        }

        System.out.println("Enter certificate to add to trusted keystore or 'q' to quit: [1]");
        String line = reader.readLine().trim();
        int k;
        try {
            k = (line.length() == 0) ? 0 : Integer.parseInt(line) - 1;
        } catch (NumberFormatException e) {
            System.out.println("KeyStore not changed");
            return;
        }

        X509Certificate cert = chain[k];
        String alias = host + "-" + (k + 1);
        ks.setCertificateEntry(alias, cert);

        OutputStream out = new FileOutputStream("jssecacerts");
        ks.store(out, passphrase);
        out.close();

        System.out.println();
        System.out.println(cert);
        System.out.println();
        System.out.println
                ("Added certificate to keystore 'jssecacerts' using alias '"
                        + alias + "'");
    }

    private static final char[] HEXDIGITS = "0123456789abcdef".toCharArray();

    private static String toHexString(byte[] bytes) {
        StringBuilder sb = new StringBuilder(bytes.length * 3);
        for (int b : bytes) {
            b &= 0xff;
            sb.append(HEXDIGITS[b >> 4]);
            sb.append(HEXDIGITS[b & 15]);
            sb.append(' ');
        }
        return sb.toString();
    }

    private static class SavingTrustManager implements X509TrustManager {

        private final X509TrustManager tm;
        private X509Certificate[] chain;

        SavingTrustManager(X509TrustManager tm) {
            this.tm = tm;
        }

        public X509Certificate[] getAcceptedIssuers() {
            throw new UnsupportedOperationException();
        }

        public void checkClientTrusted(X509Certificate[] chain, String authType)
                throws CertificateException {
            throw new UnsupportedOperationException();
        }

        public void checkServerTrusted(X509Certificate[] chain, String authType)
                throws CertificateException {
            this.chain = chain;
            tm.checkServerTrusted(chain, authType);
        }
    }
}
23
ответ дан Shashank Agrawal 1 September 2018 в 02:21
поделиться
-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true

Он используется для перехода к проверке сертификата.

4
ответ дан SkyWalker 1 September 2018 в 02:21
поделиться

У меня такая же проблема на ubuntu 15.10. Попробуйте загрузить плагин локально, например. https://github.com/lmenezes/elasticsearch-kopf/archive/master.zip и установите с помощью этой команды:

sudo /usr/share/elasticsearch/bin/plugin install file:/home/dev/Downloads/elasticsearch-kopf-master.zip

Путь может отличаться в зависимости от вашей среды.

С уважением.

0
ответ дан user1379218 1 September 2018 в 02:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: