Java Jasypt:主密码有多安全?
同事们,我在spring boot项目中使用了Jasypt(在Windows上运行的独立jar)。 我需要通过命令行传递主密码来运行jar。 它看起来像:Java Jasypt:主密码有多安全?,java,spring,jasypt,Java,Spring,Jasypt,同事们,我在spring boot项目中使用了Jasypt(在Windows上运行的独立jar)。 我需要通过命令行传递主密码来运行jar。 它看起来像: java-jar-djastpt.encryptor.password=masterpass app-1.0.0-RELEASE.jar 因此,任何人都可以通过Windows任务管理器查看masterpass: 如何获得这张通行证 我发现了一个示例,其中主密码存储在Windows环境变量中,但这似乎不是一个好主意。在客户端工作站上运行时,通
java-jar-djastpt.encryptor.password=masterpass app-1.0.0-RELEASE.jar
因此,任何人都可以通过Windows任务管理器查看masterpass
:
如何获得这张通行证
我发现了一个示例,其中主密码存储在Windows环境变量中,但这似乎不是一个好主意。在客户端工作站上运行时,通常很难隐藏任何内容。最后-当密码/密钥被加密时,您仍然需要将密码或私钥存储在某处:/ 您可以对数据进行编码/加密以使其更加困难,但一旦二进制文件和配置驻留在客户端,您就不会轻易阻止一个专用的对手 如果您至少不想在外部(环境或命令行中)显示密码,那么在运行任何其他操作之前,从文件中读取主密码并在
main
中设置系统属性如何
(请让我知道它是否工作)至少您不应该通过命令行选项提供主密码,因为其他用户可以访问机器,他们可以从进程列表中检索主密码 而是通过单独的配置文件提供。因此,如果您使用的是spring boot,并且在config/application.properties中有您的常规env属性,那么只需添加一个只包含主密码的config/application.yml文件,并仅在只有用户权限的机器上保存该文件(chmod go-rxw)。例如,参见此处: 安装过程中的其他一切可能都来自git repo,有访问权限的人只能看到加密的密码,但无法解密,除非他们拥有主密码——如果他们无法实际访问生产机器,他们就没有主密码。操作员可能只向开发团队提供加密的密码,因此他们永远不知道实际密码。DevOps专家可能不喜欢这样,但将密码保密到最少数量的管理员通常有利于安全