Я пытаюсь получить твиты, используя библиотеку twitter4j для своего java проекта. При первом запуске я получил ошибку о сертификате sun.security.validator.ValidatorException
и sun.security.provider.certpath.SunCertPathBuilderException
. Затем я добавил сертификат twitter:
C:\Program Files\Java\jdk1.7.0_45\jre\lib\security>keytool -importcert -trustcacerts -file PathToCert -alias ca_alias -keystore "C:\Program Files\Java\jdk1.7.0_45\jre\lib\security\cacerts"
Но безуспешно. Вот процедура получения твиттеров:
public static void main(String[] args) throws TwitterException {
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true)
.setOAuthConsumerKey("myConsumerKey")
.setOAuthConsumerSecret("myConsumerSecret")
.setOAuthAccessToken("myAccessToken")
.setOAuthAccessTokenSecret("myAccessTokenSecret");
TwitterFactory tf = new TwitterFactory(cb.build());
Twitter twitter = tf.getInstance();
try {
Query query = new Query("iphone");
QueryResult result;
result = twitter.search(query);
System.out.println("Total amount of tweets: " + result.getTweets().size());
List<Status> tweets = result.getTweets();
for (Status tweet : tweets) {
System.out.println("@" + tweet.getUser().getScreenName() + " : " + tweet.getText());
}
} catch (TwitterException te) {
te.printStackTrace();
System.out.println("Failed to search tweets: " + te.getMessage());
}
А вот ошибка:
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Relevant discussions can be found on the Internet at:
http://www.google.co.jp/search?q=d35baff5 or
http://www.google.co.jp/search?q=1446302e
TwitterException{exceptionCode=[d35baff5-1446302e 43208640-747fd158 43208640-747fd158 43208640-747fd158], statusCode=-1, message=null, code=-1, retryAfter=-1, rateLimitStatus=null, version=3.0.5}
at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:177)
at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:61)
at twitter4j.internal.http.HttpClientWrapper.get(HttpClientWrapper.java:81)
at twitter4j.TwitterImpl.get(TwitterImpl.java:1929)
at twitter4j.TwitterImpl.search(TwitterImpl.java:306)
at jku.cc.servlets.TweetsAnalyzer.main(TweetsAnalyzer.java:38)
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
at sun.security.ssl.Alerts.getSSLException(Unknown Source)
at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)
at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
at sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source)
at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source)
at sun.security.ssl.Handshaker.processLoop(Unknown Source)
at sun.security.ssl.Handshaker.process_record(Unknown Source)
at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.net.HttpURLConnection.getResponseCode(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(Unknown Source)
at twitter4j.internal.http.HttpResponseImpl.<init>(HttpResponseImpl.java:34)
at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:141)
... 5 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(Unknown Source)
at sun.security.validator.PKIXValidator.engineValidate(Unknown Source)
at sun.security.validator.Validator.validate(Unknown Source)
at sun.security.ssl.X509TrustManagerImpl.validate(Unknown Source)
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(Unknown Source)
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)
... 20 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source)
at java.security.cert.CertPathBuilder.build(Unknown Source)
... 26 more
Failed to search tweets: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Перейти к URL-адрес в браузере Firefox, нажмите на цепочку сертификата https (рядом с URL-адрес). Нажмите и"Подробнее" и > на "безопасности" и > "и показать сертификат" и > на "детали" и > "на экспорт.."` в. Самовывоз название и выбрать тип файла пример.ЦЭИ. Теперь у вас есть файл ключей, и вы должны добавить это к вашей JVM
Определить местоположение cacerts в файлы, например. Файлы C:\Program (х86)\Ява\jre1.6.0_22\Либ\безопасность\cacerts в. `
Следующий импортировать `пример.файл CER в cacerts в в командной строке:
инструмент -импорт -псевдоним пример-хранилище файлов C:\Program (х86)\Ява\jre1.6.0_22\Либ\\cacerts в файл безопасности пример.КВЖД
Вам будет предложено ввести пароль, который по умолчанию изменяется
Перезагрузка виртуальной машины Java/ПК.
источник: http://magicmonster.com/kb/prg/java/ssl/pkix_path_building_failed.html
После многих часов попыток создать файлы сертификатов, чтобы заставить мою установку Java 6 работать с новыми сертификатами twitter, я, наконец, наткнулся на невероятно простое решение, спрятанное в комментарии на одной из досок объявлений. Просто скопируйте файл cacerts из установки Java 7 и перезапишите тот, что находится в установке Java 6. Возможно, лучше сначала сделать резервную копию файла cacerts, но затем просто скопировать новый файл и БУМ! он просто работает.
Обратите внимание, что я скопировал файл cacerts из Windows на установку Linux, и он отлично работает.
Файл находится в jre/lib/security/cacerts
как в старой, так и в новой установке Java jdk.
Надеюсь, это сэкономит кому-то еще несколько часов нервотрепки.
Мой подход пользовательского интерфейса:
УМК-линия:
Я наткнулся на эту проблему, на решение которой ушло много часов исследований, особенно с автогенерируемыми сертификатами, которые, в отличие от официальных, довольно хитрые и Java их не очень любит.
Пожалуйста, проверьте следующую ссылку: Решение проблемы с сертификатами в Java
В основном вам нужно добавить сертификат с сервера в Java Home certs.
InstallCert
и выполните его во время работы сервера, указав следующие аргументы server[:port]
. Пароль не нужен, так как для Java-сертификатов работает оригинальный пароль ("changeit").jssecerts
в директории, где вы выполнили программу (если программа выполняется из Eclipse, убедитесь, что вы настроили рабочую директорию в Run -> Configurations
).$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);
}
}
}
Пытаюсь загрузить URL-адрес в браузере и просмотр сайта'сертификат s (обычно это'С можно иконка со знаком замка. Это's на левой или правой стороне браузера's в адресную строку) если это'с истекшим сроком или ненадежных по другой причине.
Новые версии, как правило, приходят с обновленным набором доверенных сертификатов.
Также, если это's возможно, удалить старые версии. Это сделает ошибки неправильной явные.
Если вы разрабатываете под JDK кроме последнего доступны - попробуйте заменить `%переменной JAVA_HOME%/JRE и/lib/безопасности/cacerts в файл с новым один из последних установленный JRE (сделать резервную копию сначала) как @Джереми-Гуделл говорит в его ответ
Если ничего выше решает ключей использовать проблему, чтобы сохранить сертификат(ы) на Java'ы ключей:
keytool -trustcacerts -keystore "%JAVA_HOME%jre\lib\security\cacerts" -storepass changeit -importcert -alias <alias_name> -file <path_to_crt_file>
Файл с сертификатом можно получить из браузера, как @MagGGG предлагает в своем ответить.
Примечание 1: Возможно, вам придется повторить это для каждого сертификата в цепочке вашего сайта'ы сертификат. Начните от корня одного.
Примечание 2: в <псевдоним>
должно быть уникальным среди ключей ключей в магазине или будет показывать ошибку.
Чтобы получить список всех сертификатов в хранилище вы можете запустить:
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
У меня была немного другая ситуация, когда оба JDK и JRE 1.8.0_112 присутствовали на моей системе.
Я импортировал новых сертификатов ca в [JDK_FOLDER]\среда jre\lib в\безопасность\cacerts в
используя уже известные команды:
keytool -import -trustcacerts -keystore cacerts -alias <new_ca_alias> -file <path_to_ca_cert_file>
Все равно, я продолжал получать те же инфраструктура pkix путь здании не удалось ошибка.
Я добавил отладочную информацию на Java командной строки, с помощью Ява -Djavax.чистая.отладки=все ... и GT; отладка.журнал. В debug.лог-файл, строку, которая начинается с *хранилище:* фактически указал на хранилище cacerts найден в[JRE_FOLDER]\Либ\безопасность\cacerts в
.
В моем случае решение было скопировать файл cacerts файл, используемая JDK (который новый КАС добавил) над той, что используется JRE и что исправили проблему.
Предыстория:
Я получаю следующую ошибку, когда я пытаюсь запустить чистый МВН установить в мой проект и через среда NetBeans "очистить и построить" вариант. Эта проблема из-за сертификата не доступны, когда мы скачать через чистых зерен язь/через командную строку, но с возможностью загрузки файлов через браузер.
Ошибка:
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-адрес в вопрос:
2. Теперь установить ключ магазин, чтобы исправить проблему.
C:\Program файлы\папку Java\jdk1.8.0_141\среда JRE\bin и>ключей -importcert -файл "и C:/user/sheldon/desktop/product.cer" -псевдоним продукта -хранилище "и C:/Program файлы/Ява/jdk1.8.0_141/среда jre/lib/безопасности/cacerts в себе".
Пример командной строки команды/выход:
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
Я хотел, чтобы импортировать сертификат smtp.gmail.com
Только решение работало для меня
Введите команду, чтобы просмотреть этот сертификат
D:\openssl\bin\openssl.exe s_client -подключения по протоколу SMTP.в Gmail.ком:465
Скопировать и сохранить грань между " по - -----начните сертификата-----" и "-----конец сертификат-----" и в файл в Gmail.КВЖД
Запустить
ключей -импорт -псевдоним smtp.gmail.com -хранилище " в%переменной JAVA_HOME%/JRE и/lib/безопасности/cacerts в том, что" -файл C:\Users\Admin\Desktop\gmail.cer
Введите пароль chageit
Нажмите кнопку Да, чтобы импортировать сертификат
Перезапуск Явы
теперь выполните команду и вы хорошо идти
Причина, мы вам выше ошибка заключается в том, что JDK является в комплекте с большим количеством доверенного центра сертификации(ca) сертификаты в файл под названием ‘cacerts В’, но этот файл не имеет никакого понятия о наших самоподписанный сертификат. Иными словами, cacerts файл не наш самоподписанный сертификат и, следовательно, не рассматривать его в качестве доверенного лица, и, следовательно, он дает выше сообщение об ошибке.
Как исправить вышеуказанные ошибки
Чтобы исправить вышеперечисленные ошибки, все, что нам нужно-это импортировать самозаверяющий сертификат в файл cacerts.
Во-первых, найдите файл cacerts. Мы должны выяснить расположения пакета JDK. При запуске приложения через один из как в IDE Eclipse или IntelliJ идея перейти к настройкам проекта и выяснить, что положение с JDK. Для Эл.г на Mac типичное расположение операционной системы в cacerts файл будет в этом месте /библиотека/для Java/JavaVirtualMachines/ {{JDK_version}}/содержание/домой/в jre/lib/безопасности на машину окна было бы под {{Installation_directory}}/{{JDK_version}}/среда jre/lib/безопасности
Как только вы обнаружили файл cacerts, теперь нам нужно импортировать самозаверяющий сертификат, чтобы этот файл cacerts. Проверьте последние статьи, если вы не знаете как создать самоподписанный сертификат правильно.
Если вы не имеете файл сертификата(.ЭЛТ) и просто .JKS файл можно создать .файл CRT с помощью ниже команду. В случае, если у вас уже есть .ЭЛТ/.затем файл PEM можно пропустить следующую команду
keytool -export -keystore keystore.jks -alias selfsigned -file selfsigned.crt
Выше шаг будет генерировать файл под названием Как.ЭЛТ.Теперь импортируйте сертификат в cacerts в
keytool -importcert -file selfsigned.crt -alias selfsigned -keystore {{cacerts path}}
для Эл.г
keytool -importcert -file selfsigned.nextgen.crt -alias selfsigned.nextgen -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/jre/lib/security/cacerts
Вот и все, перезапустите приложение и он должен работать нормально. Если он все еще не работает и сделать исключение SSL-подтверждения. Это, вероятно, означает, что вы используете другой домен регистрируется в сертификате.
Это'т Твиттер-конкретный ответ, но это вопрос, который встает при поиске этой ошибки. Если ваша система получает эту ошибку при подключении к веб-сайту, что кажется, иметь действительный сертификат при просмотре в веб-браузере, что, вероятно, означает , что сайт имеет неполную цепочку сертификатов.
Краткое резюме проблемы: сертификации Дон'т использовать их корневой сертификат, чтобы подписать только любой старый сертификат. Вместо этого, они (обычно) подписывать сертификаты intermediate, которые имеют сертификации флаг (то есть разрешено подписывать сертификаты). Тогда при покупке сертификата от центра сертификации, они подпишут ваш запрос с одного из этих промежуточных сертификатов.
Ваше доверие-магазине на Java, скорее всего, имеет только корневой сертификат, а не промежуточные.
Неправильно настроенный сайт может вернуть just их самоподписанный сертификат. Проблема: он был подписан промежуточный сертификат, что's не в ваше доверие магазин. Браузеры будут обрабатывать эту проблему путем загрузки или с помощью кэширования промежуточных сертификатом; это позволяет обеспечить максимальную совместимость веб-сайт. Java и инструменты, например, OpenSSL, однако, выиграл'т. И это вызывает ошибку в вопросе.
Вы можете проверить это подозрение с помощью тест оформлен протокол SSL. Если вы запустите это на сайте и написано
этот сервер'цепочки сертификатов S является неполным.
то что это подтверждает. Вы также можете увидеть, посмотрев по пути сертификации и видя текста Extra Download.
Как исправить: администратор сервера должен настроить веб-сервер, а также вернуть промежуточных сертификатов. Для Comodo, например, отсюда.файл ca-пакет приходит в сподручное. Например, в конфигурации Apache с mod_ssl, вы'd с помощью SSLCertificateChainFile
параметр конфигурации. Для nginx, нужно объединить промежуточных сертификатов и сертификатов и использовать в конфигурации SSL сертификата. Вы можете узнать больше, поиск на "неполная цепочка сертификатов" в онлайн.
Я наткнулся на этот вопрос при попытке установить свежий огурец-затмение плагин в 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
В то время как некоторые другие ответы будут уместны и полезны на этот вопрос's в данной ситуации, они были тем не менее бесполезен и вводит в заблуждение мой вопрос.
В моем случае, проблема была в том, что URL-адрес, указанный на их сайте обновление:
Однако при переходе к нему через браузер, он перенаправляется на (примечание добавил, что ".на GitHubи"):
Поэтому резолюция, чтобы просто использовать перенаправленные версия обновления URL сайта, при добавлении сайта обновление в Eclipse.
Передо мной стоял тот же вопрос, и он решен с помощью приведенных ниже простых шагов:
Скачать InstallCert.java из Google
скомпилировать его с помощью и javac InstallCert.java
запустить InstallCert.java используя Ява InstallCert.java, с hostname и порт HTTPS, и нажимаем “1”, когда задаете вопрос. Он будет добавить “localhost” в качестве надежного хранилища, и создает файл с именем “jssecacerts“, как показано ниже:
Ява InstallCert адресу localhost:443
Основным источником для решения этой проблемы является:
https://ankurjain26.blogspot.in/2017/11/javaxnetsslsslhandshakeexception.html
Это решение, но в виде моей истории с этой проблемой:
Я был почти мертв, пытаясь все приведенное выше решение(за 3 дня ) и ничего не работало для меня.
Я потерял всякую надежду.
Я связался с моей командой безопасности в связи с этим, потому что я за прокси, и они сказали, что они недавно обновили свои политики безопасности.
Я сильно отругала их за не информирование разработчиков.
Позже они выпустили новый "в cacerts в том, что" файл, содержащий все сертификаты.
Я снял cacerts файл, который присутствует в %переменной JAVA_HOME%/JRE и/lib/безопасности и решить мою проблему.
Так что если вы столкнулись с этой проблемой, это может быть от сети команда также, как это.
Это'дополнение к ответу https://stackoverflow.com/a/36427118/1491414. Спасибо @MagGGG
Я исправил это с помощью ниже метод-
Когда у вас есть ошибки с программным обеспечением компании Atlassian экс. Джира
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 '[email protected]' 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
вы можете добавить сертификаты для это'ы надежного хранилища (изменить missing_ca к правильному наименование сертификата):
keytool -importcert -file missing_ca.crt -alias missing_ca -keystore /opt/atlassian/jira/jre/lib/security/cacerts
Если просит пароль ставим изменяется
и подтвердить г
После этого просто перезагрузите Джира.