将 JRE 设置为使用 Windows 信任存储区,特别是用户的信任存储区
摘要:Java 选项允许 Java 对计算机帐户使用 Windows 信任存储区。哪个选项允许它对用户帐户使用 Windows 信任存储?-Djavax.net.ssl.trustStoreType=WINDOWS-ROOT
我们有一个在Windows客户端上运行的Java应用程序。应用程序从各种源获取数据,其中一些源使用不在默认文件中的证书。cacerts
当用户选择访问外部数据的项目时,系统会提示他们下载外部站点的证书。由于我们的安全设置,该文件对用户是只读的。由于 JRE 无法将证书导入 到 中,因此不会下载外部证书。系统会一遍又一遍地提示用户下载证书。cacerts
cacerts
当用户被授予 对 的写入权限时,问题不会发生。但是,我们的安全团队不允许我们将对该文件的写入权限授予普通用户。他们的策略是,驱动器上除用户自己的配置文件之外的任何文件都不应是可读写的。cacerts
C:
我们认为我们找到了一种解决方法,使Java使用Windows信任存储。我们将标志添加到启动脚本中。这迫使Java使用Windows信任存储区,用户可以写入该信任存储区。-Djavax.net.ssl.trustStoreType=WINDOWS-ROOT
遗憾的是,用户只能写入其证书存储区,而不能写入计算机的证书存储区。当我们以管理员身份运行应用时,证书将导入到计算机的应用商店中。之后,不会提示普通用户下载证书。但是,如果我们没有使用管理员权限运行它一次,则不会导入证书,因为Java会尝试写入Windows计算机帐户存储,该存储区与 一样严格锁定。cacerts
是否有一个标志强制 Java 使用整个 Windows 信任存储区,而不仅仅是计算机帐户的存储区?