如何加密server.ssl.key-store-password值并在SpringBoot中使用它

时间:2017-09-13 16:26:55

标签: ssl spring-boot encryption spring-security

我想知道无论如何我们可以加密server.ssl.key-store-password值并将其存储在application.properties文件中,而不是以纯文本格式存储。

我找不到任何关于此的文件。对此的任何帮助都非常感谢。

提前致谢。

2 个答案:

答案 0 :(得分:0)

Spring允许您加密属性文件,但该加密的密钥需要保存在某处。 This回答建议将它们保存在环境变量中,并指出如果您仍想要加密它们的指南。

答案 1 :(得分:0)

您可以根据需要使用“ jasypt-spring-boot-starter”。您所需要做的就是以下步骤。

  1. 从maven中央存储库下载“ jasypt-spring-boot-starter”。

    com.github.ulisesbocchio jasypt-spring-boot-starter 。
  2. 在“ @SpringBootApplication”注释所在的Spring Boot起始文件中,仅包含“ @EnableEncryptableProperties”。这里要注意的一点是,一旦在主启动文件上放置了可加密的属性批注,Jaspyt模块将加载并扫描应用程序的所有属性文件,以查找以“ ENC”开头的任何属性值。

  3. 在“ application.properties”文件中,需要添加一些其他配置,如下所示(所有这些都是默认设置,您可以根据需要进行更改):

jasypt.encryptor.password=<Some password for encryption>
jasypt.encryptor.algorithm=PBEWITHHMACSHA256ANDAES_128
jasypt.encryptor.key-obtention-iterations=1000
jasypt.encryptor.pool-size=1
jasypt.encryptor.salt-generator-classname=org.jasypt.salt.RandomSaltGenerator
jasypt.encryptor.iv-generator-classname=org.jasypt.iv.RandomIvGenerator
jasypt.encryptor.string-output-type=base64

完成上述步骤后,现在您可以将加密的属性值放在ENC()下。 Jasypt将扫描ENC()中包含的值,并尝试解密该值。

例如 spring.datasource.password = ENC(tHe0atcRsE + uOTxt2GmFYPXNHREch9R / 12qD082gw7vv6bby5Rk)