我有一个 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/