Есть ли параметр java для отключения проверки сертификата?

Я получил эту ошибку при попытке запустить приложение:

Sun.security.validator.ValidatorException: PKIX path validation failed: 
java.security.cert.CertPathValidatorException:  java.net.UnknownHostException:oscp.thawte.com

Приложение за закрытой сетью и никогда не сможет добраться до oscp.thawte.com. Есть ли параметр java, который может отключить это?

Ответ 1

-Dcom.sun.net.ssl.checkRevocation=false

Ответ 2

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

Полный пример: проблема с сертификатом сертификата в HTTPS

Ответ 3

Используйте утилиту cli utility keytool из дистрибутива Java для импорта (и доверия!) Необходимых сертификатов

Образец:

  1. Из файла cli change dir to jre\bin

  2. Проверить хранилище ключей (файл найден в каталоге jre\bin)
    keytool -list -keystore..\lib\security\cacerts
    Введите пароль хранилища ключей: changeit

  3. Загрузите и сохраните всю цепочку сертификатов с нужного сервера.

  4. Добавить сертификаты (прежде чем нужно удалить атрибут "только для чтения" в файле "..\lib\security\cacerts") keytool -alias REPLACE_TO_ANY_UNIQ_NAME -import -keystore..\lib\security\cacerts -file "r:\root.crt"

случайно я нашел такой простой наконечник. Другие решения требуют использования InstallCert.Java и JDK

источник: http://www.java-samples.com/showtutorial.php?tutorialid=210

Ответ 4

Ответ, данный MK, отлично работает:)

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

AxisProperties.setProperty("axis.socketSecureFactory","org.apache.axis.components.net.SunFakeTrustSocketFactory");

Ответ 5

На моем Mac я уверен, что я не буду разрешать java в любом месте, кроме определенного сайта, я смог использовать Preferences-> Java, чтобы открыть панель управления Java и отключить проверку. Если DLink когда-нибудь исправит свой сертификат, я верну его.

Java control panel - Advanced

Ответ 6

В дополнение к ответам выше. Вы можете сделать это программно, внедрив TrustManager:

TrustManager[] trustAllCerts = new TrustManager[] {
        new X509TrustManager() {
          public java.security.cert.X509Certificate[] getAcceptedIssuers() {
           return null;
          }
          @Override
          public void checkClientTrusted(X509Certificate[] arg0, String arg1)
           throws CertificateException {}

          @Override
          public void checkServerTrusted(X509Certificate[] arg0, String arg1)
            throws CertificateException {}
          }
     };

Однако это не очень хорошая практика для производства.

Проверьте этот пример на Как отключить проверку сертификата SSL в Java