首页 文章

我如何加密/解密Spring启动服务器属性[重复]

提问于
浏览
2

这个问题在这里已有答案:

我有一个使用SSL的Spring启动应用程序 . 在我的属性文件中,我为我的密钥库密码定义了一个值,我的想法是不公开密码,所以我加密了密码,我正在寻找 Spring 季启动我如何解密这个密码值:

server.port=8443
server.ssl.key-alias=selfsigned_certif
server.ssl.key-password=JDHF7E879E7R79E7D9D7Fkdskjdhdkjsdghjsfdghsgfd
server.ssl.key-store=classpath:ssl-server.jks
server.ssl.key-store-provider=SUN
server.ssl.key-store-type=JKS

在我的情况下我不能使用 Jasypt 因为我们应该使用特定的开发库来加密和解密密码

有没有办法使用Spring启动实现密钥库属性的加密/解密?提前致谢

2 回答

  • 1

    Update: 正如Adam在其评论中指出的那样,对重复的问题here有一个类似/更好的答案 .


    我们通过合并Jasypt工具做了类似的事情 . 它很好地融入了 Spring 季生态系统 . 基本上,您使用加密密钥(字符串)对值进行加密,并将加密值放在由 ENC(...) 包围的属性文件中 . 然后将加密密钥放在运行代码的服务器上的指定环境变量中 . 然后,您可以使用 @Value(...) 将加密值直接映射到变量中 .

    另一种选择是根本不将密码存储在源代码中,而是在环境变量中保护服务器上的密码,并在运行时直接访问它们 . 我认为,无论如何,您最终都依赖于服务器是安全的这一事实,因此您必须确信您的服务器不会受到损害 .

  • 1

    如果您正在寻找与 Spring 季启动相关的答案,我建议您查看spring-cloud-config项目 .

    该项目允许外部管理配置(例如,在文件系统或git中),并且还支持通过对称私有密钥和通过公钥/私钥对加密属性值 .

    在这种情况下,“受保护”属性如下所示:

    db.password={cipher}AZXCASDAZXC341234ZXCASDFedr453
    

    其中AZXCASDAZXC341234ZXCASDFedr453实际上是某些密码的加密值 . 为了加密它,你应该调用“加密”方法一次,假设spring-cloud-config服务器在你的机器的端口8888上运行 .

    $ curl localhost:8888/encrypt -d mysecretdbpassword >>AZXCASDAZXC341234ZXCASDFedr453
    

    密码“mysecretdbopassword”的值被加密 .

    必须在spring-cloud-config微服务本身的配置中指定密钥 .

    encrypt.key=ABC123ABC123ABC123
    

    该服务的另一个选择是与Hashicorp保险库集成,因此它也可以成为保守秘密的良好候选者 .

相关问题