Вам нужно будет добавить корневую цепочку в файл сертификатов CA, чтобы java могла проверять самоподписанные сертификаты.
Почтальон доверяет сертификатам, которым вы явно доверяли в своем браузере.
Чтобы обновить файл сертификатов CA, вам нужно найти его, так как вы, вероятно, установили JDK.вы, скорее всего, будете в папке JRE вашего JDK../jdk1.8/jre/lib/security/cacerts
Чтобы добавить сертификат в хранилище доверенных сертификатов, используйте keytool
, если java находится в пути к вашей среде, запустите эту команду, где example.der - ваш сертификат.Я бы посоветовал вам также дать ему более подходящее псевдоним.
keytool -import -alias example -keystore /path/to/cacerts -file example.der
Вам будет предложено ввести пароль. По умолчанию javas changeit
введите пароль и введите yes
когда вас спросят, доверяете ли вы сертификату.
После добавления сертификата вы можете снова использовать keytool для просмотра списка всех сертификатов, имеющихся у вас в хранилище ключей, снова вам будет предложено ввести пароль.
keytool -list -v -keystore /path/to/cacerts
Когда я выполнил эту команду, мне дали список;Вы должны быть в состоянии найти сертификат с псевдонимом example
.Это случилось с первым в моем списке.
Alias name: digicertglobalrootca [jdk]
Creation date: 26 Aug. 2016
Entry type: trustedCertEntry
Owner: CN=DigiCert Global Root CA, OU=www.digicert.com, O=DigiCert Inc, C=US
Issuer: CN=DigiCert Global Root CA, OU=www.digicert.com, O=DigiCert Inc, C=US
Serial number: 83be056904246b1a1756ac95991c74a
Valid from: Fri Nov 10 10:00:00 AEST 2006 until: Mon Nov 10 10:00:00 AEST 2031
Certificate fingerprints:
SHA1: A8:98:5D:3A:65:E5:E5:C4:B2:D7:D6:6D:40:C6:DD:2F:B1:9C:54:36
SHA256: 43:48:A0:E9:44:4C:78:CB:26:5E:05:8D:5E:89:44:B4:D8:4F:96:62:BD:26:DB:25:7F:89:34:A4:43:C7:01:61
Signature algorithm name: SHA1withRSA
Subject Public Key Algorithm: 2048-bit RSA key
Version: 3
Вы обновили свой вопрос, добавив, что хотите игнорировать сертификаты ...
Пожалуйста, неигнорировать ошибки сертификата.Разберись с ними.Игнорирование ошибок сертификата открывает соединение с потенциальными атаками MITM.Соблазнительно сказать, что это только для тестового кода, он не будет в конечном итоге в производстве, но мы все знаем, что происходит, когда приближается крайний срок: код не показывает никаких ошибок при тестировании -> мы можем отправить его как есть.
Теперь я знаю, что вы намерены сделать это ВСЕГДА - поэтому здесь - некоторый соответствующий код.
// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
}
};
// Install the all-trusting trust manager
try {
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
}
// Now you can access an https URL without having the certificate in the truststore
try {
URL url = new URL("https://hostname/index.html");
} catch (MalformedURLException e) {
}