java - 从服务器运行 notes java 代理时没有受信任的证书
问题描述
我有一个正在执行 HTTPS POST 的 Java 代理:
URL url = new URL("https://postman-echo.com/post");
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);
conn.getOutputStream().write(postDataBytes);
//Reader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
System.out.println("RESPONSE : " + conn.getResponseMessage());
return conn.getResponseMessage();
手动在服务器上运行代理时,此 POST 有效。如果我通过以下方式发布计划或通过控制台的代理:tell amgr run 然后我收到此错误:
error message: javax.net.ssl.SSLHandshakeException: com.ibm.jsse2.util.j: No trusted certificate found
我真的不知道为什么会这样。它运行代理: 1. 目标设置为无 2. 使用管理员 ID 运行 3. 安全 允许具有完全管理权限的受限操作
它上周工作,现在不再..
更新 当发布到:https ://postman-echo.com/post时它可以工作,从服务器运行时也是如此。当发布到我自己的具有 comodo 扩展验证 ssl 的网站时,我收到不信任证书错误
解决方案 我已将服务器从 9.0.1 FP4 更新到 9.0.1 FP10。它现在将数据(来自预定代理)发布到 HTTPS 地址,而不会出现错误。
解决方案
您的 java 代理在 domino 中实现的 JRE 中运行。当您通过 https 连接时,您必须将所请求站点的 ssl 证书导入 JRE 的信任库(cacert 文件)。否则 ssl 握手失败。服务器上 JRE 的位置是 /jvm/lib/security 。
推荐阅读
- java - 如何将对象传递给 jButton1ActionPerformed
- java - 结合两种方法。int 不能被取消引用
- android - fitSystemWindows 与 windowTranlucentStatus 和 windowTranslucentNavigation 使工具栏太高
- swift - 谓词查找整数属性数组与集合的交集?
- javascript - 可以在 php 文件中调试 Javascript 吗?
- javascript - 脚本验证数字 1-100
- android - 在 Andtoid 中了解“通话结束”事件的完美方式
- javascript - 第一次提交按钮单击后,我看不到双向绑定值
- jsoup - JSoup 登录超时
- webdriver-io - Webdriver.io browser.elementIdDisplayed(ID) 不返回布尔值