在 java.security 文件中,可以指定 keystore.type 值。但是,这看起来会更改所有 JVM 实例的默认密钥库类型。我只想为一个实例更改它。
目前,它设置为"jks",但我需要它是"jceks"。我尝试了-Djava.security.keystore.type=jceks
但这似乎没有达到我想要的效果。
正确的方法是什么?
-Dname=value
设置系统属性;java.security
中的设置是安全属性而不是系统属性,不能直接在命令行上设置。您可以创建一个补充(或替换(文件,并使用 sysprop-Djava.security.properties=name_of_file_containing_keystore_setting
指定该文件,只要您(或其他任何人(没有更改java.security
中security.overridePropertiesFile=true
的默认设置。类似: 如何在不更改源代码的情况下禁用 TLSv1?
.请注意,如果您只需要更改JSSE默认用于SSL/TLS/HTTPS/等的信任库和/或密钥库的类型,则这些信任库和/或密钥库确实使用syspropsjavax.net.ssl.{trust,key}StoreType
(以及{trust,key}Store{,Password}
(。
此外,您可能还需要注意,Java9 up 将安装时的默认值更改为 PKCS12,它比 JKS 更安全、更可移植/可互操作。