【问题标题】:Configure HTTPS on server over HTTPS in application在应用程序中通过 HTTPS 在服务器上配置 HTTPS
【发布时间】:2020-10-30 01:07:36
【问题描述】:

我找不到任何类似的问题。 在服务器上启用 HTTPS 与直接在应用程序中启用 HTTPS 是什么意思,两者有什么区别,哪个更好?

例如:如果你有一个 Spring Boot 应用程序运行在 Tomcat 服务器上,你可以直接在 Spring Boot 中配置 HTTPS(密钥库、应用程序属性),或者在 Tomcat 服务器本身上配置 HTTPS。 在这两种情况下,应用程序都将通过 HTTPS 提供服务?

它们需要成对出现,还是只需要一个就足够了? 其他组合的问题也应该相同:Asp.Net 和 IIS、PHP 和 WAMP 等。

【问题讨论】:

  • “Spring 框架”可以为您配置 ssl(通过属性或 xml),或者您可以在代码中进行配置。在这两种情况下,应用程序都将通过 HTTPS 提供服务。我认为其中一个就足够了。
  • “其他组合的问题也应该相同”是完全错误的。 IIS/ASP.NET 只允许你在 IIS 上设置 HTTPS。

标签: asp.net spring-boot tomcat iis https


【解决方案1】:

HTTP 连接由Tomcat 等网络服务器管理。 Spring Boot 不直接处理它们。在 Spring Boot 中配置 HTTPS 与在 Tomcat 中配置 HTTPS 的区别在于应用程序的打包方式。

可以将 Spring Boot 应用程序打包为 WAR 工件并部署在外部 Tomcat 服务器上。在这种情况下,您可以直接在 Tomcat 中配置 HTTP/HTTPS,通常在一个名为 server.xml 的配置文件中。例如:

<Connector port="8080"
           protocol="HTTP/1.1"
           connectionTimeout="2000"
           minSpareThreads="10"
           maxThreads="100"/>

您还可以将 Spring Boot 应用程序打包为独立的 JAR 工件,web server is embedded 是应用程序本身的一部分,因此您可以像 java -jar myapp.jar 一样作为标准 Java 应用程序运行。在这种情况下,任何 Tomcat 配置都将通过 Spring Boot 进行,无论是从属性文件(application.properties 或 application.yml)还是通过 WebServerFactoryCustomizer bean。例如:

server:
  port: 9001
  tomcat:
    connection-timeout: 2000
    threads:
      max: 100
      min-spare: 10

在这两种情况下,HTTP 配置都适用于 Tomcat,因为它是“说出”HTTP 协议并响应客户端的组件。 Spring Boot 提供了一个漂亮方便的接口来配置服务器。 HTTPS 也是如此。两者之间的选择取决于您的架构。如果您将 Spring Boot 与嵌入式服务器一起使用,那么您将通过 Spring 属性或 bean 添加 HTTPS 配置。如果您对如何做到这一点感兴趣,我写了一个 article 来讨论它。

在你提到的配对中,总有一些共同的元素:

  • 管理 HTTP 连接的 Web 服务器
  • 与 Web 服务器交互以获取 HTTP 请求并回复 HTTP 响应的应用程序。

两者之间的交互因语言、框架和服务器而异。对于 Tomcat,服务器有两个主要组件:一个负责管理 HTTP(在 Tomcat 中称为 Coyote),另一个为 Java 应用程序提供运行上下文以与服务器交互(在 Tomcat 中称为 Catalina)。 Java 应用程序和 Tomcat 之间的交互是根据 Java Servlet API 进行的。

【讨论】:

    猜你喜欢
    • 2017-05-05
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    • 2020-05-29
    • 2012-07-20
    • 2020-03-09
    • 2020-10-22
    • 1970-01-01
    相关资源
    最近更新 更多