将.key和.pem文件导入到jks文件并在Java/Spring中使用

2023-12-11

我从服务团队获得了以下密钥/证书,用于通过 SSL 调用他们的 API,我通过curl 命令对其进行了验证。

1. QA.test.key
2. QA.test.pem 

卷曲命令:

curl --key QA.test.key --cert ./QA.test.pem -X POST --header "Content-Type: application/json" --header "Accept: application/json" -d '{"pan":"1234567890123456", "client": " Application Name "}' https://test-qa.abc.com/tokenize

现在,要通过 https 调用 Java 中的 API,我需要执行以下操作吗?

  1. 创建自签名 jks 文件
  2. 将 .key 和 .pem 导入到新的 test.jks 文件中?
  3. 请执行下列操作

    public class TestApp {
    
    final static String KEYSTORE_PASSWORD = "testing";
    
    static
    {
        System.setProperty("javax.net.ssl.trustStore", "src/main/resources/test.jks");
        System.setProperty("javax.net.ssl.trustStorePassword", KEYSTORE_PASSWORD);
        System.setProperty("javax.net.ssl.keyStore",  "src/main/resources/test.jks");
        System.setProperty("javax.net.ssl.keyStorePassword", KEYSTORE_PASSWORD);
    }
    
    
    public static void main(String[] args) {
        SpringApplication.run(TestApp.class, args);
    }
    

    }

我在使用 jks 文件时收到无效证书错误,创建 jks 文件并导入 .key 和 .pem 文件以使其正常工作的最佳方法是什么?


使用 OpenSSL 实用程序创建 PKCS #12 文件。然后,您可以使用系统属性将其指定为密钥存储。

openssl pkcs12 -export -in QA.test.pem -inkey QA.test.key -out test.pkcs12

此命令将提示输入密码来加密新的 PKCS #12 文件。它还可能提示输入用于加密的密码QA.test.key,如果有的话。



javax.net.ssl.keyStore=test.pkcs12
javax.net.ssl.keyStorePassword=<whatever you entered when creating PKCS #12>
javax.net.ssl.keyStoreType=PKCS12
  

The trustStore属性是分开的;它们影响如何验证服务器。如果服务器使用“真实”CA 颁发的证书,则 Java 运行时中应该已经存在必要的证书。否则,您必须创建一个额外的密钥存储,这可以使用 Java 来完成keytool命令。

注意Java 9 将使用 PKCS #12 文件作为默认文件密钥库类型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将.key和.pem文件导入到jks文件并在Java/Spring中使用 的相关文章

随机推荐