【问题标题】:Spring boot SSL/HTTPS using embedded Tomcat setting, best practice on setting password使用嵌入式 Tomcat 设置的 Spring Boot SSL/HTTPS,设置密码的最佳实践
【发布时间】:2020-02-24 22:20:15
【问题描述】:

我们目前正在使用嵌入式 Tomcat 服务器来运行我们的 Spring Boot Web 应用程序。为了启用 HTTPS,我们在属性文件中设置证书相关配置。使用 pom.xml,我们将其打包:

  mvn clean install -P PT  # DEV, PT, UAT, Staging, DR, PROD

我们将代码打包到 WAR 文件中,并使用以下命令从命令行运行应用程序:

  java -jar our-spring-boot-wep.war

我已经阅读了几篇关于如何配置/启用 HTTPS 的在线文章,它们都使用类似的配置方法,如下所示,无论是内部还是外部。

 # Tomcat connector configuration
 server.tomcat.port=8080
 server.tomcat.ssl.enabled=true
 server.tomcat.ssl.key-alias=cd-something.net
 server.tomcat.ssl.key-store=certificates/cd-something.net.jks
 server.tomcat.ssl.key-password=secret
 server.tomcat.ssl.key-store-type=JKS
 server.tomcat.ssl.trust-store=certificates/trustStore.jks
 server.tomcat.ssl.trust-store-password=secret

有没有办法隐藏/加密密码等信息?有几种不同的环境,DEV、PT、UAT、PROD。每个 env 都有自己的证书/JKS 文件,配置它的最佳实践是什么?谢谢!

【问题讨论】:

    标签: spring-boot https jks


    【解决方案1】:

    您的配置属性必须在环境中是唯一的,并将共享属性放在战争中。

    示例:

    /resources/application.properties

     server.tomcat.port=8080
     server.tomcat.ssl.enabled=true
     server.tomcat.ssl.key-alias=cd-something.net
     server.tomcat.ssl.key-store-type=JKS
    

    /home/app/config/application.properties

     server.tomcat.ssl.key-store=certificates/cd-something.net.jks
     server.tomcat.ssl.key-password=secret
     server.tomcat.ssl.trust-store=certificates/trustStore.jks
     server.tomcat.ssl.trust-store-password=secret
    

    通过这种方式访问​​代码,您只会看到共享属性,并且只有在您有权访问运行应用程序的服务器时才能读取特定密码。

    我认为这种原生方式应该可行,并且您可以探索多个密钥管理器,例如 AWS Key Management。

    【讨论】:

      猜你喜欢
      • 2018-02-22
      • 2017-10-11
      • 2014-05-21
      • 2022-04-13
      • 1970-01-01
      • 1970-01-01
      • 2016-12-03
      • 2011-12-08
      相关资源
      最近更新 更多