如何在命令行上指定密钥库类型?
How do I specify the keystore type on the command line?
在 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
的默认设置。相似:How can I disable TLSv1 without change source code? .
请注意,如果您只需要更改 JSSE 默认用于 SSL/TLS/HTTPS/etc 的信任库 and/or 密钥库的类型,那些确实使用了sysprops javax.net.ssl.{trust,key}StoreType
(以及{trust,key}Store{,Password}
)。
您可能还想知道 Java9 up 将安装后的默认设置更改为 PKCS12,它比 JKS 更安全 portable/interoperable。
在 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
的默认设置。相似:How can I disable TLSv1 without change source code? .
请注意,如果您只需要更改 JSSE 默认用于 SSL/TLS/HTTPS/etc 的信任库 and/or 密钥库的类型,那些确实使用了sysprops javax.net.ssl.{trust,key}StoreType
(以及{trust,key}Store{,Password}
)。
您可能还想知道 Java9 up 将安装后的默认设置更改为 PKCS12,它比 JKS 更安全 portable/interoperable。