Spring org.springframework.core.io.UrlResource не поддерживает ресурс https - PullRequest
0 голосов
/ 03 декабря 2018

при настройке местоположения конфигурации Grails, как показано ниже

grails.config.locations = [
    "https://ip:8443/config/Config.groovy"
]

, в журнале появится следующее предупреждающее сообщение

 2018-11-28 19:04:22,682 WARN   ConfigurationHelper - Unable to load specified config location https://ip:8443/config/Config.groovy : File does not exist.

, но я могу получить доступ к https://ip:8443/config/Config.groovy непосредственно избраузер.

В org.codehaus.groovy.grails.commons.cfg.ConfigurationHelper.mergeInLocations ()

private static void mergeInLocations(ConfigObject config, List locations, PathMatchingResourcePatternResolver resolver, ClassLoader classLoader) {

...
 def resource = resolver.getResource(location.toString())
 if(resource.exists()) {
      ...
 } else {
   LOG.warn "Unable to load specified config location $location : File does not exist."
 }

}

распознавательэто org.springframework.core.io.support.PathMatchingResourcePatternResolver весной.и результат resolver.getResource (location.toString ()) будет org.springframework.core.io.UrlResource

, а код UrlResource.exists () похож на

public boolean exists() {
      ...
    try {
       URLConnection con = url.openConnection();
       HttpURLConnection httpCon =
                    (con instanceof HttpURLConnection ? (HttpURLConnection) con : null);
            if (httpCon != null) {
                int code = httpCon.getResponseCode();
                if (code == HttpURLConnection.HTTP_OK) {
                    return true;
                }
                else if (code == HttpURLConnection.HTTP_NOT_FOUND) {
                    return false;
                }
            }
    }catch(IOException ex){
       return false;
    }

}

и с момента его https он выдаст java.security.cert.CertificateException: альтернативные имена субъектов отсутствуют при httpCon.getResponseCode ().

, поэтому UrlResource не предназначен для httpsресурс?что делать, если я хочу загрузить ресурс https?спасибо.

1 Ответ

0 голосов
/ 03 декабря 2018

Обратите внимание на сообщение об ошибке, которое вы описываете, которое я также могу продублировать: «Нет альтернативных имен субъектов» означает, что ваше имя хоста «ip» отсутствует в сертификате.Попробуйте переключиться на полное доменное имя, например, «ip.mydomain.com» или любое другое, что закодировано в сертификате(Вы можете просмотреть информацию о сертификате в браузере в диалоговом окне «Информация о странице»)

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