java - 如何在命令行上指定密钥库类型?
问题描述
在 java.security 文件中,您可以指定 keystore.type 值。但是,这看起来像是更改了所有 JVM 实例的默认密钥库类型。我只想更改一个实例。
目前,它设置为“jks”,但我需要它是“jceks”。我试过-Djava.security.keystore.type=jceks
了,但这似乎并没有达到我想要的效果。
这样做的正确方法是什么?
解决方案
-Dname=value
设置系统属性;里面的设置java.security
是安全属性不是系统属性,不能直接在命令行设置。只要您(或其他任何人)没有更改in的默认设置,您就可以创建一个补充(或替换)文件并使用 sysprop 指定该文件。类似:如何在不更改源代码的情况下禁用 TLSv1?.-Djava.security.properties=name_of_file_containing_keystore_setting
security.overridePropertiesFile=true
java.security
请注意,如果您只需要更改默认情况下JSSE 用于 SSL/TLS/HTTPS/etc的信任库和/或密钥库的类型,则它们确实使用 sysprops javax.net.ssl.{trust,key}StoreType
(以及{trust,key}Store{,Password}
)。
此外,您可能想知道 Java9 将安装时的默认设置更改为 PKCS12,这比 JKS 更安全、更便携/可互操作。
推荐阅读
- php - PHP PDO Json 未在 React Native 中显示
- javascript - Google Auth Popup 不适用于 React 17 应用程序;收到 React 警告是为什么或如何解决?
- typescript - Vue.js 自定义指令不会动态更新状态
- amazon-web-services - 如果用户未在角色的信任策略中描述,IAM 用户是否可以担任角色?
- python - 提取不同行中的多个值
- c++ - 如何使用函数和向量在 C++ 中编写联系人列表程序?
- javascript - 扩展运算符仅添加 for 循环中的最后一个值
- python - 如何为目录中的图像创建有用的标签功能?
- linux - 如何正确使用带有 unix 命令的破折号 (-)?
- macos - 在 Mac 上运行汇编程序“as”时出现错误:“无效的操作系统更新说明符,预期逗号”