【问题标题】:Tomcat with HTTPS REST Setup带有 HTTPS REST 设置的 Tomcat
【发布时间】:2016-04-13 19:47:55
【问题描述】:

我正在使用 Jersey 为 Tomcat 编写一个 REST 服务器。我精通Java,但这是我第一次为网络写作,所以我希望这个问题不是愚蠢的。我已经尝试过搜索,但无法找到我理解的答案。

我正在尝试使用 HTTPS 和基本身份验证,但我不知道是否必须在实际 Java 中编写任何内容来完成此操作。 Tomcat 是否负责 SSL 信息的所有加密/解密,还是我必须在我的服务器代码中做一些事情来处理这个?在客户端中,我知道我将手动执行此操作,但我找不到有关如何在服务器端执行此操作的任何信息。它是Tomcat设置吗?我是否必须将 Tomcat 设置为仅将 HTTPS 流量转发到我的服务器,然后它将解密并将解密的信息发送到我的服务器,在那里它会像普通的未加密命令一样运行?

【问题讨论】:

    标签: rest tomcat ssl https jersey


    【解决方案1】:

    对于服务器,您首先需要确保将 Tomcat 配置为支持 HTTPS/SSL/TLS。这包括设置密钥库和编辑配置文件。您可以在SSL/TLS Configuration HOW-TO 看到有关如何执行此操作的所有详细信息。请注意,该链接适用于 Tomcat 8。对于 Tomcat 7,您应该搜索相应的文档。

    设置完成后,要真正使用 HTTPS,剩下要做的就是在 Web 应用程序的 web.xml 文件中将 <transport> 设置为 CONFIDENTIAL

    <security-constraint>
        ...
        <user-data-constraint>
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
    </security-constraint>
    

    如果您还没有设置 web.xml 安全性,那么您需要花时间阅读Securing Web Applications。还有一节介绍使用 web.xml 配置设置基本身份验证。

    当您获得有关基本身份验证的部分时,您会注意到&lt;realm-name&gt; 的配置。领域是需要用 Tomcat 设置的。这基本上是 Tomcat 将查找身份验证的用户存储的访问点。要了解有关设置领域的更多信息,请参阅Realm Configuration HOW-TO(这也是 Tomcat 8 链接)。有不同类型的领域可供选择,因此只需选择一种,例如 JDBC 领域。

    就是这样。我认为我提供的链接不是提供教程,而是商品官员来源,在解释方面会比我做的更好。如果这对您来说是全新的,那么您可能需要一天的时间来设置所有内容,但我相信您将从这些文档中学到很多东西。

    另外一件事,如果你想做授权,一旦你在 tomcat 中使用角色设置了领域(参见 JDBC 领域部分中的示例),你可以使用 web.xml 中的角色授权配置(参见“保护 Web Applications”链接)或者您可以使用 Jersey 的基于角色的授权,这将提供更精细的控制。为此请参阅Authorization - securing resources

    【讨论】:

    • 谢谢,这是一个很好的答案!我是否也可以让 Apache 处理 HTTPS,然后只允许 Apache 将 HTTPS 流量转发到 tomcat?
    • 老实说,我不经常使用 Apache,所以我不能说。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 2014-09-14
    • 1970-01-01
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    • 2019-11-14
    相关资源
    最近更新 更多