java - 如何为嵌入式证书指定 JVM SSL 参数?

标签 java ssl command-line

假设我有以下 JAR:

myapp-1.0.jar/
    META-INF/
        MANIFEST
    classes/
        com/
            <All my .class files>
        mycert1.cer
        mycert2.cer
        mycert3.cer

我需要一种从命令行运行 JAR 的方法,如下所示:

java -jar myapp-1.0.jar -Djavax.net.ssl.keyStore=myapp-1.0.jar/classes/mycert1.cer

或:

java -jar myapp-1.0.jar -Djavax.net.ssl.keyStore=myapp-1.0.jar/classes/mycert2.cer

但由于 JAR 是一个 ZIP 文件,我似乎无法从命令行访问“嵌入式”SSL 证书。此解决方案需要同时适用于 Windows 和 Linux。想法?

最佳答案

'javax.net.ssl.keyStore' 的值是一个文件名。

JAR 文件中的资源不是文件。

您不能通过系统属性执行此操作。

您必须为资源获取一个 InputStream,并从中加载一个 KeyStore,并用它初始化一个 KeyManager,用它初始化一个 SSLContext,从中获取一个 SSLSocketFactory,并用它创建您的 SSLSockets,如在 JSSE 引用指南中描述。

关于java - 如何为嵌入式证书指定 JVM SSL 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23395922/

相关文章:

c# - 使用参数启动程序

linux - 需要从 3 行连续的文本创建一条记录

java - 如何在 Spring Boot 和 Hibernate 等框架中通过缓慢的启动时间来提高工作效率?

Java sleep() 在实际 sleep 命令之前停止执行代码

java - 如何配置 JDK 1.6 以与仅 TLS 服务器进行 ssl 握手

ssl - DNS 重定向是否可以解决意外子域上的 SSL 证书错误?

java - 从文件中读取字符串数据

java - 我如何更改 Ant grep 使其正则表达式中具有 unix 样式 "or"?

iOS curl : unable to get local issuer certificate

linux - 目录大小奇怪。尺寸过大