【问题标题】:Deploy an SSL enabled Java SpringBoot war to External Tomcat Server将启用 SSL 的 Java SpringBoot 战争部署到外部 Tomcat 服务器
【发布时间】:2018-07-28 04:48:49
【问题描述】:

我有一个 spring boot 应用程序,它是一个启用 SSL 的应用程序,我可以通过 localhost 访问它。 “https://localhost:8443/showPage”像这样。对于本地主机,我创建了 SSL 证书并在 application.properties 中提供了详细信息,如下所示

server.port: 8443
server.ssl.key-store: classpath:keystore.p12
server.ssl.key-store-password: 123456
server.ssl.keyStoreType: PKCS12
server.ssl.keyAlias: tomcat

这对本地主机非常有效。我想将战争部署到已经启用 SSL 的 tomcat 服务器。为此,我更改了如下属性

server.port: 8443
server.ssl.key-store: /opt/tomcat/keystore/keystorefile.jks
server.ssl.key-store-password: Rv$@1234
server.ssl.keyStoreType: JKS
server.ssl.keyAlias: tomcat

但是我在访问任何请求时都得到了下面的图像。我正确地调用了请求。不是如图所示。像这样:“https://ipaddress:8443/war_name/showPage

我的控制器接受请求 @RequestMapping("showPage")

【问题讨论】:

  • server.* 属性在部署到容器时无用。这些仅在运行 jar/war 和配置嵌入式容器时有用。

标签: tomcat ssl spring-boot


【解决方案1】:

我花了几天时间寻找答案,所以我将在此处发布我的解决方案供其他人关注。我正在使用 Spring Boot 2 和在 centOs 8 上运行的外部 tomcat 9。

  1. 获取 SSL 证书,我使用带有密码的 keytool 创建了一个自签名证书。

  2. 将 jks 和 p12 文件存储在您的 apache 服务器上。我把它存储在 /opt/tomcat

  3. 编辑您的 apache server.xml 文件以获得类似的内容。

     <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" 
      maxThreads="150" scheme="https" secure="true"
      keystoreFile="/opt/tomcat/keystore.p12" keystorePass="password" 
      clientAuth="false" sslProtocol="TLS" sslEnabledProtocols="TLSv1.2,TLSv1.1"/>
    
  4. 重启Tomcat

  5. 为 8443 打开防火墙端口并重启防火墙守护进程

      firewall-cmd --zone=public --permanent --add-port 8443/tcp
      firewall-cmd --reload
    

一旦你知道步骤是非常快的!只是不要忘记任何事情。

【讨论】:

  • 你在 spring 配置中做了哪些改变?
猜你喜欢
  • 2018-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-25
  • 2018-01-26
  • 2015-02-13
  • 2013-06-24
  • 2012-04-14
相关资源
最近更新 更多