gpt4 book ai didi

java - 如何在 Java 的 HTTPS 请求调用中包含 SSL 证书文件

转载 作者:太空宇宙 更新时间:2023-11-03 15:08:54 27 4
gpt4 key购买 nike

我正在尝试在 HTTPS 请求调用中包含 SSL 证书文件(.crt 和 .key)。但是这样做时出现握手失败错误。这是我在 Java 中包含该文件的代码。客户端期望 SSL 版本应该是 TLSv1.2。

public static void main(String[] args){
SSLConnectionSocketFactory socketFactory = null;
String uri = "https://myclient.com";
try {
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(
new FileInputStream(new File(
"certificate.p12")),
keyStorePassword.toCharArray());

socketFactory = new SSLConnectionSocketFactory(
new SSLContextBuilder().loadTrustMaterial(null, new TrustSelfSignedStrategy())
.loadKeyMaterial(keyStore, keyStorePassword.toCharArray()).build(),
NoopHostnameVerifier.INSTANCE);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}

最佳答案

问题是您正在尝试加载一个 pkcs12 文件,而您应该加载一个 keystore 文件。

所以第一步(您已经做过)是使用 openssl 创建一个 pkcs12(或 pfx)文件。

openssl pkcs12 -export -out certificate.p12 -inkey privateKey.key -in certificate.crt 

现在您必须使用javakeytool 创建一个符合jks 的 keystore 。

keytool -genkey -alias mydomain -keyalg RSA -keystore mykeystore.jks -keysize 2048

你会被问到一堆问题,包括密码。

创建 keystore 后,您现在可以导入 pkcs12 文件:

keytool -importkeystore -srckeystore certificate.p12 -srcstoretype pkcs12 -destkeystore .\mykeystore.jks -deststoretype JKS

在您的 Java 代码中,您必须导入 mykeystore.jks 而不是 certificate.p12

关于java - 如何在 Java 的 HTTPS 请求调用中包含 SSL 证书文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48557606/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com