【发布时间】:2015-08-24 06:50:36
【问题描述】:
我有一段代码将有效负载发送到 https 端点(或应该)。我也有一个 .pem 格式的 CA 链,这是我尝试添加的代码中使用它来执行 POST 的方式。
HttpClient client = new HttpClient();
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String jsonString = gson.toJson(parentData);
Properties systemProps = System.getProperties();
systemProps.put( "javax.net.ssl.trustStore", "/Users/kaulk/Downloads/djca-2048.pem");
systemProps.put("javax.net.ssl.trustStorePassword", "changeit");
System.setProperty("javax.net.ssl.keyStoreType","pkcs12");
System.setProperties(systemProps);
PostMethod method = new PostMethod("https://beta.fcm.fint.xxx.net/notify/BuildNotification");
StringRequestEntity requestEntity = new StringRequestEntity(
jsonString,
"application/json",
"UTF-8");
method.setRequestEntity(requestEntity);
int statusCode = client.executeMethod(method);
但它失败并出现错误:
原因:java.security.NoSuchAlgorithmException:构造错误 实现(算法:默认,提供者:SunJSSE,类: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)在 java.security.Provider$Service.newInstance(Provider.java:1245) 在 sun.security.jca.GetInstance.getInstance(GetInstance.java:220) 在 sun.security.jca.GetInstance.getInstance(GetInstance.java:147) 在 javax.net.ssl.SSLContext.getInstance(SSLContext.java:125) 在 javax.net.ssl.SSLContext.getDefault(SSLContext.java:68) 在 javax.net.ssl.SSLSocketFactory.getDefault(SSLSocketFactory.java:102) ... 22 更多原因:java.io.IOException: Invalid keystore format
有什么原因吗?
【问题讨论】:
标签: java ssl https httpclient ca