我有点腌渍,但合理的解决方案可能会帮助很多人(甚至数千人)。
我想将最新版本的Jenkins(编写本文时为1.599)部署到Tomcat容器(7.0.39),然后强制所有流量使用SSL。
我将$ CATALINA_BASE / conf / server.xml中的连接器设置为他们需要的连接器。然后我将以下内容添加到$ CATALINA_BASE / conf / web.xml ...
<security-constraint>
<web-resource-collection>
<web-resource-name>Jenkins</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
然而,遗憾的是,这不会起作用,因为詹金斯战争中的web.xml会覆盖它。
<security-constraint>
<web-resource-collection>
<web-resource-name>other</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<!-- no security constraint -->
</security-constraint>
据我了解,没有办法允许我强制从Tomcat web.xml中进行设置。每次新版本发布时我都不会手动编辑我的WAR,这不是一个选项。
所以,问题是,更改服务器或客户端web.xml的最佳方法是什么,以便默认设置仍然存在,但我们可以选择强制传输保证机密。< / p>
欢迎任何想法! :)
答案 0 :(得分:1)
不确定它是否会有所帮助,但我遇到了相反的问题。公司政策是不允许PUT,DELETE或OPTIONS,所以他们在tomcat conf / web.xml中有这样的部分:
<security-constraint>
<web-resource-collection>
<web-resource-name>
restricted methods
</web-resource-name>
<url-pattern> /* </url-pattern>
<http-method> PUT </http-method>
<http-method> DELETE </http-method>
<http-method> OPTIONS </http-method>
<http-method> TRACE </http-method>
</web-resource-collection>
<auth-constraint />
</security-constraint>
我发现我可以在应用程序web.xml中为子目录
覆盖它<security-constraint>
<web-resource-collection>
<web-resource-name>REST Endpoints</web-resource-name>
<url-pattern>/rest/*</url-pattern>
</web-resource-collection>
</security-constraint>
但不适用于上下文根(以下内容不允许OPTIONS工作):
<security-constraint>
<web-resource-collection>
<web-resource-name>REST Endpoints</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
</security-constraint>
您的意思是您可以在没有任何问题的情况下为子目录要求SSL。不确定这是否足以满足您的詹金斯要求。
答案 1 :(得分:0)
我刚注意到http://docs.oracle.com/cd/E19798-01/821-1841/bncbk/index.html中的以下语言:
当多个安全性中出现相同的url-pattern和http-method时 约束,对模式和方法的约束由定义 结合各个约束,这可能导致 无意中拒绝访问。
这表明您指定的约束将被合并,这意味着您正在尝试的约束应该起作用。您确定在服务器上正确配置了SSL吗?编辑应用程序中的web.xml实际上是否解决了问题?同一篇文章的这一部分似乎暗示如果没有正确配置SSL,它可能会回退到http:
为确保数据通过安全连接传输,请确保 为您的服务器配置了SSL支持。 SSL支持已经存在 为GlassFish Server配置。