首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用SSL登录GeoServer 2.19

无法使用SSL登录GeoServer 2.19
EN

Stack Overflow用户
提问于 2021-06-25 19:50:46
回答 1查看 718关注 0票数 1

我能够在一个新的服务器实例上使用如下所示的URL到达GeoServer登录表单:https://sub.domain.tld/geoserver。但是,输入正确的用户名和密码会导致/geoserver/j_spring_security_check无法在浏览器窗口中以纯文本形式显示,而"检查“不能显示在地址行(Chrome和Firefox)上。登录在http://sub.domain.tld:8080/geoserver上运行得很好,当登录时,SSL将完全跳过登录表单并打开完整的GUI --但是没有一个示例层预览会起作用(无法获取/geoserver/tiger/wms ...or (任何层))。

我有3台类似的服务器安装在早期的软件版本中,它们都能完美地工作:

代码语言:javascript
复制
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)

最新的服务器是:

代码语言:javascript
复制
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

我密切关注GeoServer安装过程,发现了这里。Apache已经安装,并使用certbot和“让我们加密”证书使用虚拟主机配置。我将以下内容添加到/etc/httpd/sites-available/sub.domain.tld.conf文件的部分:

代码语言:javascript
复制
  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 /webapp/geoserver/web.xml/web.xml文件略有不同,因为它有单独的CORS部分,对于Jetty和Tomcat没有注释。Tomcat部分和交叉原点滤波器映射没有注释。与以前不同的是,我必须启用SELinux httpd_can_network_connect进程才能通过SSL进入GeoServer登录表单。但是,禁用SELinux强制执行并不能解决j_spring_security_check问题。

敏感的WMS和WFS内容必须通过SSL提供。我现在正在旋转我的研究车轮,所以任何帮助解决这将是非常感谢的!

EN

回答 1

Stack Overflow用户

发布于 2022-06-01 13:34:36

我遇到了一个类似的问题,试图使用Apache反向代理Geoserver码头容器。

在猛击我的头几天之后,我发现我需要在设置的两端做一些改变。

阿帕奇:

代码语言:javascript
复制
<Location "/geoserver">
  ProxyPreserveHost On
  ProxyPass http://localhost:8080/geoserver
  ProxyPassReverse http://localhost:8080/geoserver
</Location>

ProxyPreserveHost指令应该确保使用的是sub.domain.tld,而不是localhost

然而,在这一点上,我遇到了另一个问题,无论我做了什么&注销URL使用的是http://而不是 https://

这需要调整Tomcat的服务器配置,特别是连接器使用的方案。

猫猫:

代码语言:javascript
复制
<Connector 
 port="8080" 
 protocol="HTTP/1.1" 
 connectionTimeout="20000" 
 redirectPort="8443" 
 scheme="https"
/>

注意,scheme的值是https,通常是http,因为它是http连接器。此连接器不对通信进行SSL/TLS加密,因此它将在正常情况下(适当地)将协议设置为http。

由于我们使用的是SSL/TLS加密的代理,所以我们不需要Tomcat来完成这项工作,但是我们仍然需要告诉Tomcat使用https而不是通常的http来描述服务器名。

或者,您也可以考虑使用AJP连接器,它是一种完全不同的协议,但可以非常巧妙地解决其中的一些问题,而且性能更好。

这种方法的问题在于它需要更多的Apache才能工作,同时考虑到AJP相对于http连接器的强大程度,还需要一些安全方面的考虑。

此外,在Tomcat中还可以使用其他一些代理设置来消除Apache中对ProxyPreserveHost的需求,但这应该可以帮助您实现目标。

附加阅读:

Tomcat连接器文档:https://tomcat.apache.org/tomcat-9.0-doc/config/http.html

Tomcat AJP文档:https://tomcat.apache.org/tomcat-9.0-doc/config/ajp.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68136426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档