Spring 使用嵌入式 Tomcat 设置启动 SSL/HTTPS,设置密码的最佳实践

Spring boot SSL/HTTPS using embedded Tomcat setting, best practice on setting password

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

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

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

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

我已经阅读了几篇关于如何 configure/enable 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

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

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

样本:

/resources/application.属性

 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.属性

 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 等多个密钥管理器。