JVM игнорирует несоответствие имен сертификатов - PullRequest
2 голосов
/ 21 апреля 2010

Я знаю, что было много вопросов / ответов о том, как игнорировать ошибку SSL в коде.

В нашем регионе разработки dev.domain.tld мы настроили сервер приложений по SSL.

Отображаемый сертификат предназначен для somedev.domain.tld.

Нет способа изменить сертификат, это всегда будет несоответствие домена.

Поэтому, когда я развертываю веб-сервис на https://dev.domain.tld и пытаюсь подключиться / вызвать мой веб-сервис, я получаю исключение:

вызвано: java.security.cert.CertificateException: Имя не найдено: dev.domain.tld не найдено

И у меня есть somedev.domain.tld CERT в моем магазине доверия.

Теперь я видел много примеров, как изменить это в коде (используя диспетчер доверия, который принимает все домены), но как мне указать JVM игнорировать несоответствие доменов при соединении с сервером? Есть ли -Djavax.net.ssl аргумент или что-то?

Спасибо!

UPDATE:

Или, поскольку я использую Spring-WS, есть ли способ установить какое-либо свойство в Spring для этого? (WebServiceTemplate)

UPDATE

Полагаю, мне придется что-то использовать из Spring Security: http://static.springsource.org/spring-ws/sites/1.5/reference/html/security.html

1 Ответ

2 голосов
/ 21 апреля 2010

Это работает для меня в моем клиентском приложении, возможно, это также будет работать и для вас, если вы (или Spring внутри) используете HttpsURLConnection где-либо.

HostnameVerifier hv = new HostnameVerifier() {
  public boolean verify(String urlHostName, SSLSession session) {
    log.warning(String.format("Warning: URL Host: '%s' does not equal '%s'", urlHostName, session.getPeerHost()));
    return true;
  }
};

HttpsURLConnection.setDefaultHostnameVerifier(hv);

Это едва ли лучший метод SSL.Лучшее решение - использовать сертификат, соответствующий имени хоста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...