【发布时间】:2018-12-13 15:28:45
【问题描述】:
每当出现在应用程序属性文件中隐藏密码等字段的问题时,直接的答案是使用 jasypt 或其他加密方式对这些详细信息进行加密。 如果您将加密的密码和 jasypt 详细信息保存在同一个文件中,这有什么意义?或者可能将它们保存在不同的文件中..
还有其他更聪明的方法吗?
【问题讨论】:
标签: spring-boot
每当出现在应用程序属性文件中隐藏密码等字段的问题时,直接的答案是使用 jasypt 或其他加密方式对这些详细信息进行加密。 如果您将加密的密码和 jasypt 详细信息保存在同一个文件中,这有什么意义?或者可能将它们保存在不同的文件中..
还有其他更聪明的方法吗?
【问题讨论】:
标签: spring-boot
您不应该将加密密钥保存在application.properties 中,毕竟您不希望它进入您的存储库。您必须在运行应用程序时提供密钥,方法是键入它或将其存储在服务器上的某个位置。查看this 线程中的示例。
【讨论】:
假设您在典型的 application.properties 文件中获取了密码。使用 Jaspyt,您可以进行如下加密:
创建一个小型实用程序类(最好在您的 Spring Boot 应用程序之外)来加密您的密码;使用 Jasypt 的 BasicTextEncryptor 类很容易:
BasicTextEncryptor pwdEncrypt = new BasicTextEncryptor();
pwdEncrypt.setPassword(your_secret_sauce)//whatever you use here will be needed in the properties file (more on that later)
String encoded = pwdEncrypt.encrypt(password_you_want_to_encrpyt);
字符串 encoded 默认是 PBE 编码的;抓住那个
在您的属性文件中,输入以下条目:
jasypt.encryptor.password=your_secret_sauce //used in your utility
password_entry_you_want_to_encrypt=ENC(encoded) //encoded grabbed from your utility class
我假设您正在用 @SpringBootApplication。同时添加以下注释:
@EnableEncryptableProperties
@PropertySource(name="EncryptedProperties", value = "classpath:application.properties")
【讨论】:
使用jasypt 加密application.properties 文件中的属性。
它使用PBEWithMD5AndDES 进行加密。
看:
https://github.com/ulisesbocchio/jasypt-spring-boot
【讨论】: