java - 连接到 Notes 中的 LDAP 服务器的 SSLHandshakeException

标签 java ssl lotus-notes lotusscript

我有一些通过 SSL 连接到 LDAP 服务器的 java 代码:

protected DirContext getDirectoryContext(String usersDn, String password)
        throws NamingException {
    Hashtable<String, String> env = new Hashtable<String, String>();

    System.out.println("Connecting to LDAP.  Server=" + mURL + " User="
            + usersDn + " Password=" + password);

    env.put(Context.INITIAL_CONTEXT_FACTORY,
            "com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.PROVIDER_URL, mURL);
    env.put(Context.SECURITY_AUTHENTICATION, "simple");
    env.put(Context.SECURITY_PRINCIPAL, usersDn);
    env.put(Context.SECURITY_CREDENTIALS, password);
    if (mURL.startsWith("ldaps") || mURL.endsWith("636")) {
        env.put(Context.SECURITY_PROTOCOL, "ssl");
    }

    return new InitialDirContext(env);
}

代码是从 Notes 客户端 V8.5.3 中的 Notes 表单上的按钮运行的。代码在 Java 脚本库中。

有些人得到一个 SSLHandshakeException No trusted certificate found,而其他人没有得到异常并且代码运行正常。该问题似乎与工作站有关。

我没有得到错误。我有自己的 ID,它可能具有对 Notes 服务器的特殊访问权限,但我有一个没有特殊访问权限的测试 ID,并且都可以在我的 PC 上使用。

我有一个用户也是我们的 ldap 支持,所以他应该拥有连接到服务器所需的一切。但是代码给了他一个异常(exception)。在他的 PC 上尝试 Notes ldapsearch 工作正常,因此我们知道连接性很好。

一个用户在我们的开发服务器和质量检查服务器上都发生了错误。在 Dev 中,我给了她与我完全相同的访问权限。让他成为开发人员和一切,但她仍然得到异常(exception)。

到目前为止,该代码唯一适用于我的小组的人。但正如我提到的,我将一名女性添加到我们的小组中,我还使用了一个不在我们小组中的有效测试 ID。我能想到的唯一区别是我们都有设计师,而其他人没有。但我不明白这怎么会是个问题。

为什么有些人会得到错误而其他人不会?

最佳答案

据我所知,Lotus ldapsearch 实用程序不执行 SSL 连接,因此我认为它有效这一事实毫无意义。我会从表面上看错误消息:LDAP 服务器的 SSL 证书是 self 认证的,或者是由其根证书不在用户 keystore 中的 CA 认证的。由于这是在 Notes 按钮中运行的 Java,我不太确定 keystore 使用了什么。即,我不确定它是否正在使用安装在 Notes 中的 JVM 中的文件,或者它是否已连接使用本地 names.nsf。但本质上是一个 Notes 人,我会在它工作的机器上和不工作的机器上查看 client names.nsf 中的 Certificates View 。

关于java - 连接到 Notes 中的 LDAP 服务器的 SSLHandshakeException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20386057/

相关文章:

java - 空指针异常(未解决)和无法将 WSResponse 映射到 play 2.4 中的结果(这部分已解决。我猜)

创建 DSNless 连接时出现 Java SQL 异常

python - pip 不会安装任何东西,出现大量错误等

Magento - 结帐页面未加载目录搜索的 https URL

lotus-notes - 在 Lotus Notes 中根据具有数值的文本字段对 View 进行排序时出现问题

java - 如何使用 Lotus Notes API 从 Java 创建和运行代理

Java - Apache Spark 通信

Java SSL 握手异常 "no cipher suites in common"

request - XPage:如何使用 post http 方法在 2 个 xpage 之间发送数据?

java - RxJava 测试订阅者/TestSingleSubscriber