Geoserver 和移动到 HTTPS
Geoserver and moving to HTTPS
我已经成功安装了独立于平台的二进制版本 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 servlet 上 运行ning。有人有任何关于如何配置 https 的文档或链接吗?
进步!!所以我的安装使用的是 Jetty。我已经使用有效证书正确设置了密钥库。我已经更新了 start.ini 文件以反映密钥库和密码的位置但是...当我尝试 运行 地理服务器时我得到:
ERROR : No module found to provide ssl for https{enabled}
我的码头安装的模块文件夹中没有 SSL.MOD 模块。我确实从 https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.2.13.v20150730/ 中挖掘出一个模块 (ssl) 但我现在得到:
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 专家,所以我不想随意复制别人的配置设置。
这是一个简单的例子,找到一个 Jetty tutorial 并跟随它,GeoServer 不关心 https
。
但是,我应该警告您,您在 GeoServer 文档中找不到太多帮助的原因是您不应该 运行 生产环境中的平台独立二进制文件。这就是文档需要 server.xml
(tomcat 的一部分)并假设您使用旨在处理 ssl 的 Apache2 或 Nginx Web 服务器的原因。
好的,只是想分享这个以防它有帮助。它有点简短,但希望会有用。请注意:我的设置使用了合法的 GoDaddy DNS/SSL 证书,因此对某些人来说这可能是一个限制器并迫使您使用自签名证书。
感谢创造 'aha' 时刻的 Ian Turton :)
我使用以下 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.
我使用了从 GoDaddy 下载的合法 PFX 文件。我已经为他们设置了 SSL certificate/DNS,所以这只是一个请求 PFX 文件的问题。
其次,我使用从 AdoptOpenJDK 安装的 JAVA 导入了我的 PFX。我转到命令行,导航到 AdoptOpenJDK bin 文件夹(其中有一个 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...
然后我使用 GoDaddy 的 DNS 连接到实例:https://myXYZ.de:8443/
瞧 Tomcat 运行 在 SSL 上,没有证书错误。由于安装了 Geoserver。我可以将地理服务器添加到最后:https://myXYZ.de:8443/geoserver
瞧数字 2.
您提到的两条警告消息都来自 GeoServer 存储库上 Jetty 配置文件中的位腐烂。您发现缺少 ssl.mod 文件,手动添加它可以解决该问题。
第二个错误 java.lang.IllegalStateException: No constructor class
来自 Jetty 版本配置文件的混合。 GeoServer 2.16 存储库中的 jetty-https.xml 文件来自 Jetty 9.4,jetty-ssl.xml 来自 Jetty 9.2。在这些版本之间的某个时刻,构造函数 <Configure id="Server" class="org.eclipse.jetty.server.Server">
的位置从 jetty-https 移动到 jetty-ssl。它在 GeoServer 存储库中未正确更新,因此存在一组不匹配的 xml 文件。
我通过从 9.2 复制 jetty-https.xml 文件来匹配 Geoserver 中包含的 9.2 版本的 jetty-ssl.xml 来解决这个问题。您可以使用与 Geoserver 运行 相匹配的最新码头文件,但请确保复制所有这些文件,ssl.mod、jetty-https.xml、jetty-ssl.xml , 和 jetty-ssl-context.xml.
我已经成功安装了独立于平台的二进制版本 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 servlet 上 运行ning。有人有任何关于如何配置 https 的文档或链接吗?
进步!!所以我的安装使用的是 Jetty。我已经使用有效证书正确设置了密钥库。我已经更新了 start.ini 文件以反映密钥库和密码的位置但是...当我尝试 运行 地理服务器时我得到:
ERROR : No module found to provide ssl for https{enabled}
我的码头安装的模块文件夹中没有 SSL.MOD 模块。我确实从 https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.2.13.v20150730/ 中挖掘出一个模块 (ssl) 但我现在得到:
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 专家,所以我不想随意复制别人的配置设置。
这是一个简单的例子,找到一个 Jetty tutorial 并跟随它,GeoServer 不关心 https
。
但是,我应该警告您,您在 GeoServer 文档中找不到太多帮助的原因是您不应该 运行 生产环境中的平台独立二进制文件。这就是文档需要 server.xml
(tomcat 的一部分)并假设您使用旨在处理 ssl 的 Apache2 或 Nginx Web 服务器的原因。
好的,只是想分享这个以防它有帮助。它有点简短,但希望会有用。请注意:我的设置使用了合法的 GoDaddy DNS/SSL 证书,因此对某些人来说这可能是一个限制器并迫使您使用自签名证书。
感谢创造 'aha' 时刻的 Ian Turton :)
我使用以下 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.
我使用了从 GoDaddy 下载的合法 PFX 文件。我已经为他们设置了 SSL certificate/DNS,所以这只是一个请求 PFX 文件的问题。
其次,我使用从 AdoptOpenJDK 安装的 JAVA 导入了我的 PFX。我转到命令行,导航到 AdoptOpenJDK bin 文件夹(其中有一个 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...
然后我使用 GoDaddy 的 DNS 连接到实例:https://myXYZ.de:8443/
瞧 Tomcat 运行 在 SSL 上,没有证书错误。由于安装了 Geoserver。我可以将地理服务器添加到最后:https://myXYZ.de:8443/geoserver
瞧数字 2.
您提到的两条警告消息都来自 GeoServer 存储库上 Jetty 配置文件中的位腐烂。您发现缺少 ssl.mod 文件,手动添加它可以解决该问题。
第二个错误 java.lang.IllegalStateException: No constructor class
来自 Jetty 版本配置文件的混合。 GeoServer 2.16 存储库中的 jetty-https.xml 文件来自 Jetty 9.4,jetty-ssl.xml 来自 Jetty 9.2。在这些版本之间的某个时刻,构造函数 <Configure id="Server" class="org.eclipse.jetty.server.Server">
的位置从 jetty-https 移动到 jetty-ssl。它在 GeoServer 存储库中未正确更新,因此存在一组不匹配的 xml 文件。
我通过从 9.2 复制 jetty-https.xml 文件来匹配 Geoserver 中包含的 9.2 版本的 jetty-ssl.xml 来解决这个问题。您可以使用与 Geoserver 运行 相匹配的最新码头文件,但请确保复制所有这些文件,ssl.mod、jetty-https.xml、jetty-ssl.xml , 和 jetty-ssl-context.xml.