代码之家  ›  专栏  ›  技术社区  ›  e2rabi

如何加密/解密Spring引导服务器属性[duplicate]

  •  2
  • e2rabi  · 技术社区  · 6 年前

    我有一个使用SSL的spring启动应用程序。在我的属性文件中,我为keystore密码定义了一个值,其目的是不以明文形式公开密码,因此我对密码进行了加密,并在spring boot中查看如何解密此密码值:

    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
    

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

    2 回复  |  直到 6 年前
        1
  •  2
  •   Mark Bramnik    6 年前

    如果你正在寻找与春季靴子相关的答案,我建议你看看 spring-cloud-config 项目。

    db.password={cipher}AZXCASDAZXC341234ZXCASDFedr453
    

    其中AZXCASDAZXC341234ZXCASDFedr453实际上是某个密码的加密值。 为了对它进行加密,您应该调用“encrypt”方法一次,假设spring云配置服务器在您的机器的8888端口上运行。

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

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

     encrypt.key=ABC123ABC123ABC123
    

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

        2
  •  1
  •   Michael W.    6 年前

    重复的问题有相似/更好的答案 here ,正如 Adam


    我们通过合并 Jasypt 工具。它很好地融入了春季生态系统。基本上,您可以使用加密密钥(字符串)对值进行加密,并将加密的值放在属性文件中 ENC(...) @Value(...) .

    另一种选择是根本不将密码存储在源代码中,而是在环境变量中保护服务器上的密码,并在运行时直接访问它们。我认为不管你用什么方法来划分它,你最终都会依赖于服务器是安全的,所以你必须确信你的服务器不会被破坏。