gpt4 book ai didi

apache - 无法使用 SSL 登录 GeoServer 2.19

转载 作者:行者123 更新时间:2023-12-04 22:42:07 24 4
gpt4 key购买 nike

我可以使用如下 URL 访问新服务器实例上的 GeoServer 登录表单:https://sub.domain.tld/geoserver .
但是,输入正确的用户名和密码会导致 无法发布/geoserver/j_spring_security_check 以纯文本形式显示在浏览器窗口中,“http://localhost:8080/geoserver/j_spring_security_check”显示在地址行(Chrome 和 Firefox)上。从http://sub.domain.tld:8080/geoserver 登录就可以了并且,在以这种方式登录时,SSL URL 将完全跳过登录表单并打开完整的 GUI——但示例图层预览均不起作用( 无法获取/geoserver/tiger/wms ...或任何层)。
我有 3 台类似的服务器设置了早期的软件版本,它们都可以完美运行:

CentOS Linux release 7.5.1804 (Core)
Apache 2.4.6
Tomcat 9.0.4.0
JVM 1.8.0_171-b10 (Oracle)
GeoServer 2.15.1 (also 2.14.1)
这个最新的服务器是:
CentOS Linux release 7.9.2009 (Core)
Apache 2.4.6
Tomcat 9.0.48.0
JVM 1.8.0_292-b10 (Red Hat)
GeoServer 2.19.1
我密切关注发现 here 的 GeoServer 安装程序. Apache 已经安装并使用 certbot 和 Let's Encrypt 证书使用虚拟主机配置。我将以下内容添加到/etc/httpd/sites-available/sub.domain.tld.conf 文件的 部分:
  ProxyRequests Off
ProxyPass /geoserver http://localhost:8080/geoserver
ProxyPassReverse /geoserver http://localhost:8080/geoserver

<Location "/geoserver">
Order allow,deny
Allow from all
Header set Access-Control-Allow-Origin "*"
</Location>
我还将“https://sub.domain.tld/geoserver/”设置为 GeoServer 中的代理基础 URL。这正是我的工作实例的设置方式。
最新的/opt/tomcat/webapps/geoserver/WEB-INF/web.xml 文件略有不同,因为它有单独的 CORS 部分,对于 Jetty 和 Tomcat 没有注释。 Tomcat 部分和跨域过滤器映射未注释。与以前不同,我必须启用 SELinux httpd_can_network_connect 进程才能通过 SSL 访问 GeoServer 登录表单。然而,禁用 SELinux 强制并不能解决 j_spring_security_check 问题。
敏感的 WMS 和 WFS 内容必须通过 SSL 提供。我现在正在研究我的轮子,所以任何解决这个问题的帮助将不胜感激!

最佳答案

我在尝试使用 Apache 反向代理 Geoserver docker 容器时遇到了类似的问题。
经过几天的努力,我发现我需要在设置的两端进行一些更改。
Apache :

<Location "/geoserver">
ProxyPreserveHost On
ProxyPass http://localhost:8080/geoserver
ProxyPassReverse http://localhost:8080/geoserver
</Location>
ProxyPreserveHost指令应确保 sub.domain.tld是使用的而不是 localhost .
但是,此时我遇到了另一个问题,无论我做什么登录和注销 URL 都使用 http://不是 https://这需要调整 Tomcat 的服务器配置,特别是连接器使用的方案。
Tomcat :
<Connector 
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
scheme="https"
/>
注意 scheme 的值是 https , 通常是 http因为它是http连接器。此连接器不会对流量进行 SSL/TLS 加密,因此它会在正常情况下(适本地)将协议(protocol)设置为 http。
由于我们使用 SSL/TLS 加密代理,我们不需要 Tomcat 来完成这项工作,但我们仍然需要告诉 Tomcat 使用 https 而不是通常的 http 来描述服务器名称。
或者,您也可以考虑使用 AJP 连接器,它是一种完全不同的协议(protocol),但可以相当巧妙地解决其中一些问题,并且性能更高。
这种方法的问题在于,它需要启用更多的 Apache 模块才能工作,以及考虑到 AJP 与 http 连接器相比强大得多的一些安全问题。
此外,还有一些其他代理设置可以在 Tomcat 中使用,以可能消除 Apache 中对 ProxyPreserveHost 的需求,但这应该可以帮助您实现目标。

补充阅读:
Tomcat HTTP 连接器文档: https://tomcat.apache.org/tomcat-9.0-doc/config/http.html
Tomcat AJP 文档: https://tomcat.apache.org/tomcat-9.0-doc/config/ajp.html

关于apache - 无法使用 SSL 登录 GeoServer 2.19,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68136426/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com