Геосервер и переход на HTTPS - PullRequest
0 голосов
/ 09 марта 2020

Я успешно установил независимую от платформы двоичную версию Geoserver (http://geoserver.org/release/2.16.2/). Давненько с ним не было никаких проблем. Теперь я хочу использовать эту версию Geoserver для веб-сайта OpenLayers (который использует GeoLocation), но для этого требуется, чтобы все компоненты, использующие HTTP, использовали HTTPS ... Geoserver - последний сервер, который мне нужно перенести.

Я посмотрел в Интернете, и, похоже, есть много информации о переводе Geoserver на HTTPS, но это не все в порядке с моей установкой. В некоторых примерах рассказывается о файлах server. xml (которых нет в моей установке) и обновлении файла apache conf (/etc/apache2/sites-avaiable/smallmelo-le-ssl.conf), которого у меня нет либо я пытаюсь получить инструкции по моей конкретной версии Geoserver. Документы утверждают, что он работает на сервлете Jetty. У кого-нибудь есть документация или ссылки о том, как настроить https?

Progress !! Так что моя установка использует Jetty. Я правильно настроил хранилище ключей с действующим сертификатом. Я обновил файл start.ini, чтобы отразить расположение хранилища ключей и пароля, но ... при попытке запустить геосервер я получаю:

ERROR : No module found to provide ssl for https{enabled}

У меня нет модуля SSL.MOD в папка модулей моей установки причала. Я выкопал модуль (ssl) из https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.2.13.v20150730/, но теперь я получаю:

java.lang.IllegalStateException: No constructor class org.eclipse.jetty.server.ServerConnector([],{}) in file:/C:/Program%20Files/Geoserver/geoserver-2.16.2/etc/jetty-https.xml

Я изо всех сил пытался выяснить, как обновить этот файл и добавить то, что нужно , Проблема в том, что я не эксперт по java, поэтому я не хочу просто случайным образом копировать чьи-либо настройки конфигурации.

Ответы [ 3 ]

2 голосов
/ 10 марта 2020

Это простой случай поиска учебника Jetty и следования ему, GeoServer не заботится о https.

Однако я должен предупредить вас, что причина, по которой вы можете В документации GeoServer нет большой помощи, потому что вы не должны запускать независимый от платформы двоичный файл в производственной среде. По этой причине документация ожидает server.xml (часть tomcat) и предполагает, что вы находитесь за веб-сервером Apache2 или Nginx, предназначенным для обработки ssl.

1 голос
/ 10 марта 2020

Хорошо, просто хотел поделиться этим на случай, если это будет полезно. Это немного кратко, но, надеюсь, будет полезным. Обратите внимание: в моей настройке использовался законный DNS-сертификат GoDaddy DNS / SSL, так что для некоторых это может стать ограничителем и заставить вас использовать самозаверяющий сертификат.

Спасибо Иану Тертону, который создал ' ага 'moment:)

Я использовал следующее видео на YouTube, чтобы установить Tomcat и Geoserver: https://www.youtube.com/watch?v=RyCFKGm4NSw

Во-первых, после запуска Tomcat ( Я использовал порт 8081, так как 8080 уже использовался). Помните, что при установке на порт 8081 он не обновил файл server.xml, поэтому мне пришлось вручную открыть его и изменить

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

на

<Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

и затем перезапустите Tomcat.

Я использовал законный файл PFX, который я скачал с GoDaddy. У меня уже есть сертификат SSL / настройка DNS с ними, так что это был просто вопрос запроса файла PFX.

Во-вторых, я импортировал свой PFX, используя JAVA, установленный из AdoptOpenJDK. Я пошел в командную строку, перешел в папку bin AdoptOpenJDK (в которой есть приложение keytool.exe). Затем я запустил эту команду:

keytool -importkeystore -srckeystore c:/temp/mygodaddycert.pfx -srcstoretype pkcs12 -destkeystore c:/temp/mycert.jks -deststoretype JKS  

Когда мне предложили ввести пароль для ввода пароля источника, я получил его от GoDaddy и затем использовал свой совершенно другой пароль для файла JKS. Затем я скопировал свой JKS-файл в папку ./conf/certs (я создал папку certs)

В-третьих, я добавил это в свой файл /conf/server.xml:

   <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150"
        SSLEnabled="true" scheme="https" secure="true" sslProtocol="TLS"
        keystoreFile="conf/certs/mycert.jks" 
        keystorePass="<your_jks_password_when_registering_with_keytool>"
    />

Я перезапускаю Tomcat ...

Затем я использовал свой DNS от GoDaddy для подключения к экземпляру: https://myXYZ.de:8443/ и вуаля Tomcat, работающий по SSL без ошибок сертификата. Так как был установлен Geoserver. Я могу просто добавить геосервер в конец: https://myXYZ.de:8443/geoserver и вуаля номер 2.

0 голосов
/ 21 апреля 2020

Оба предупреждающих сообщения, которые вы упомянули, приходят от bit rot в файлах конфигурации Jetty в репозитории GeoServer. Вы выяснили, что файл ssl.mod отсутствует, и добавление его вручную решает эту проблему.

Вторая ошибка java.lang.IllegalStateException: No constructor class возникает из-за сочетания файлов конфигурации версии Jetty. Файл jetty-https. xml, который находится в репозитории GeoServer 2.16, взят из Jetty 9.4, а jetty-ssl. xml - из Jetty 9.2. В какой-то момент между этими версиями местоположение конструктора <Configure id="Server" class="org.eclipse.jetty.server.Server"> было изменено с jetty-https на jetty-ssl. Он не был правильно обновлен в репозитории GeoServer, поэтому есть набор несовпадающих xml файлов.

Я решил эту проблему, скопировав файл jetty-https. xml из 9.2, чтобы соответствовать версии 9.2 jetty. -ssl. xml включен в Geoserver. Вы можете использовать более свежие файлы Jetty, которые соответствуют тому, на чем работает Geoserver, но убедитесь, что вы скопировали их все, ssl.mod, jetty-https. xml, jetty-ssl. xml и jetty-ssl- контекст. xml.

...