首页 > 解决方案 > 如何在命令行上指定密钥库类型?

问题描述

在 java.security 文件中,您可以指定 keystore.type 值。但是,这看起来像是更改了所有 JVM 实例的默认密钥库类型。我只想更改一个实例。

目前,它设置为“jks”,但我需要它是“jceks”。我试过-Djava.security.keystore.type=jceks了,但这似乎并没有达到我想要的效果。

这样做的正确方法是什么?

标签: javakeystore

解决方案


-Dname=value设置系统属性;里面的设置java.security是安全属性不是系统属性,不能直接在命令行设置。只要您(或其他任何人)没有更改in的默认设置,您就可以创建一个补充(或替换)文件并使用 sysprop 指定该文件。类似:如何在不更改源代码的情况下禁用 TLSv1?.-Djava.security.properties=name_of_file_containing_keystore_settingsecurity.overridePropertiesFile=truejava.security

请注意,如果您只需要更改默认情况下JSSE 用于 SSL/TLS/HTTPS/etc的信任库和/或密钥库的类型,则它们确实使用 sysprops javax.net.ssl.{trust,key}StoreType(以及{trust,key}Store{,Password})。

此外,您可能想知道 Java9 将安装时的默认设置更改为 PKCS12,这比 JKS 更安全、更便携/可互操作。


推荐阅读