java - 在 IBM Notes 中发送 HTTPS 帖子时出现 SSLHandshakeException

标签 java https server lotus-notes lotus-domino

我有一个 java 代理,我想在其中通过 HTTPS 发送数据。 HTTP 有效。但 HTTPS 却没有。我收到此错误:

javax.net.ssl.SSLHandshakeException: com.ibm.jsse2.util.j: No trusted certificate found
    at com.ibm.jsse2.o.a(o.java:9)
    at com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:340)
    at com.ibm.jsse2.kb.a(kb.java:279)
    at com.ibm.jsse2.kb.a(kb.java:221)
    at com.ibm.jsse2.lb.a(lb.java:97)
    at com.ibm.jsse2.lb.a(lb.java:102)
    at com.ibm.jsse2.kb.t(kb.java:227)
    at com.ibm.jsse2.kb.a(kb.java:425)
    at com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:785)
    at com.ibm.jsse2.SSLSocketImpl.h(SSLSocketImpl.java:675)
    at com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:669)
    at com.ibm.jsse2.SSLSocketImpl.startHandshake(SSLSocketImpl.java:95)
    at com.ibm.net.ssl.www2.protocol.https.c.afterConnect(c.java:162)
    at com.ibm.net.ssl.www2.protocol.https.d.connect(d.java:36)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1044)
    at com.ibm.net.ssl.www2.protocol.https.b.getOutputStream(b.java:53)
    at JavaAgent.postOrder(Unknown Source)
    at JavaAgent.NotesMain(Unknown Source)
    at lotus.domino.AgentBase.runNotes(Unknown Source)
    at lotus.domino.NotesThread.run(Unknown Source)
Caused by: com.ibm.jsse2.util.j: No trusted certificate found
    at com.ibm.jsse2.util.i.a(i.java:76)
    at com.ibm.jsse2.util.i.b(i.java:136)
    at com.ibm.jsse2.util.g.a(g.java:12)
    at com.ibm.jsse2.pc.a(pc.java:56)
    at com.ibm.jsse2.pc.checkServerTrusted(pc.java:95)
    at com.ibm.jsse2.pc.b(pc.java:84)
    at com.ibm.jsse2.lb.a(lb.java:639)

发帖代码是这样的:

HttpsURLConnection conn = (HttpsURLConnection)url.openConnection();
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            conn.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length));
            conn.setDoOutput(true);
            conn.getOutputStream().write(postDataBytes);

我从网站(我将 POST 发送到的地方)获取了证书,并将这些证书安装在服务器上 > ikeyman.exe(*根据 http://www-01.ibm.com/support/docview.wss?uid=swg21588966 )。之后我重新启动了整个服务器,但仍然出现握手错误。怎么会这样?代理也在这台服务器上(我们称之为服务器 B),但服务器 B 是服务器 A 的复制。我在服务器 B 上手动运行代理。 安装的是 IBM Domino 设计器 9.0 社交版

发布 9.0.1FP4

解决方案:

已在 ikeyman 上安装证书。 代理需要按计划运行,而不是手动运行。

最佳答案

哦,该死。我和你一模一样,后来测试了很多次还是不行。我终于设法解决了它,但是……我不记得是怎么解决的。

我的代码:

        HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
        SSLContext sc = SSLContext.getInstance("TLSv1.2");
        sc.init(null, null, new java.security.SecureRandom());
        conn.setSSLSocketFactory(sc.getSocketFactory());

        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        conn.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length));
        conn.setDoOutput(true);
        if (postDataBytes.length > 0)
            conn.getOutputStream().write(postDataBytes);

关于java - 在 IBM Notes 中发送 HTTPS 帖子时出现 SSLHandshakeException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51673901/

相关文章:

java - 修改hibernate中的映射表名称

.htaccess - htaccess 文件中 https 的重定向规则不起作用

ssl - ColdFusion CFHTTP 和 SSL 证书

cmd - 在服务器上停止/启动应用程序池和站点

javascript - OrientDB Javascript 服务器端函数

python - Python s.recv()返回空字符串

java - 将 Java 比较器转换为 Scala 排序

java - Spring jar 自动加载

java - 显示日期列中的数据 - 解析到日期

email - 来自非安全服务器的 HTTPS 重定向在浏览器中给出错误消息