java - httpclient 在 glassfish servlet 中发布到 https 时得到 "SSL certificate error"

标签 java maven servlets ssl glassfish

我已经用 apache httpClient 写了一个静态 post 方法:

public class HttpPost {
    public static HttpPostResult post(String url, String xml) throws IOException {
        Logger.getAnonymousLogger().log(Level.INFO, url + "|" + xml);
        HttpClient httpClient = new HttpClient();
        HttpPostResult httpPostResult = new HttpPostResult();
        PostMethod postMethod = new PostMethod(url);
        StringRequestEntity stringRequestEntity = new StringRequestEntity(xml,"xml","utf-8");
        postMethod.setRequestEntity(stringRequestEntity);
        httpClient.executeMethod(postMethod);
        httpPostResult.setStatus(postMethod.getStatusCode());
        httpPostResult.setResponseStr(postMethod.getResponseBodyAsString());
        return httpPostResult;
    }
}

这个方法在我单独测试时工作得很好,但是一旦我将它构建为 Maven 依赖项并将它包含在 http servlet 中,它就不起作用并且响应字符串变为:

<html>
<head><title>400 The SSL certificate error</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<center>The SSL certificate error</center>
<hr><center>nginx</center>
</body>
</html>

似乎远程主机正在使用 nginx,我猜可能发生了一些 SSL 信任问题,但远程主机是受信任的(由受信任机构签署的 CA)它是 https://api.mch.weixin。 qq.com/pay/orderquery

应该是什么问题?

最佳答案

我通过在 glassfish domain.xml 中添加一些配置来解决这个问题:

<jvm-options>-Djavax.net.ssl.keyStorePassword=changeit</jvm-options>
<jvm-options>-Djavax.net.ssl.trustStorePassword=changeit</jvm-options>

张贴这个以防可能对遇到同样问题的人有帮助。

请注意,changeit 是 glassfish keystore 的默认密码。

关于java - httpclient 在 glassfish servlet 中发布到 https 时得到 "SSL certificate error",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30524019/

相关文章:

java - 如何实现来自 java servlet 的图像幻灯片放映,而不需要在 html 中对图像进行硬编码?

java - 在 servlet/过滤器上调用 destroy() 方法的顺序

java - WebService 无法处理没有命名空间前缀的 SOAP 主体的请求

java - IBM Bluemix Liberty for Java 公共(public)可访问目录

java - 幻方最终值始终为真

java - Aspectj maven插件错误

java - 带有 Spring Boot 和 ibm JDBC 驱动程序的 ClassNotFoundException

maven - 为相同的 Maven 属性为每个配置文件定义不同的值

java - 将多个图像写入 ServletOutputStream?

java - 如何在 Java 中读取多行输入