使用 UnboundID SDK 和 SSL 证书文件连接到 Android 应用程序中的 LDAP 服务器

2023-12-23

我正在尝试在 Android 应用程序中连接到 LDAP 服务器,并使用 UnboundID SDK。最近,从不安全的 LDAP 更改为安全的 LDAP,我必须相应地更改应用程序。我已获得 SSL 证书文件来进行验证。我已经使用该文件来制作密钥库,如下所述here http://blog.thoughtcrime.org/authenticity-is-broken-in-ssl-but-your-app-ha。我已经在我的应用程序的资产文件夹中找到了这个密钥库文件,并且正在从中提取。下面的代码目前不起作用,并抛出异常:

LDAPException(resultCode=01 (连接错误), errorMessage=('尝试连接到服务器 place.myserver.com:636 时发生错误: javax.net.ssl.SSLHandShakeException: java.security.cert.CertPathValidatorException: 信任锚未找到认证路径

// code from above link
AssetManager assetManager = getApplicationContext().getAssets();
InputStream keyStoreInputStream = assetManager.open("yourapp.store");
KeyStore trustStore = KeyStore.getInstance("BKS");
trustStore.load(keyStoreInputStream, "myPassword".toCharArray());
TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509");
tmf.init(trustStore);
// my code
SSLUtil sslUtil = new SSLUtil(tmf.getTrustManagers());
LDAPConnection connection = new LDAPConnection(sslUtil.createSSLSocketFactory());
connection.connect("place.myserver.com", 636);

然而,代码段:

SSLUtil sslUtil = new SSLUtil(new TrustAllTrustManager());
LDAPConnection connection = new LDAPConnection(sslUtil.createSSLSocketFactory());
connection.connect("place.myserver.com", 636);

确实有效(尽管高层告诉我这样做是不安全的)。 我不太确定我在这里到底做错了什么,所以任何帮助将不胜感激。另外,如果有比我上面尝试做的更好的方法来完成此任务,请随时告诉我:)不过,我想坚持使用 UnboundID 库,因为其余代码已经使用编写如果我使用 TrustAllTrustManager,一切都会正常。


确实,信任所有信任管理器并不安全。它对于测试目的很方便,但它会允许坏人使用他为自己生成的证书来设置自己的服务器,并使用它来冒充真正的服务器,或者作为中间人进行操作,拦截并可能警告任何其他服务器客户端和真实服务器之间的通信。有了更严格的信任管理器,客户端应该拒绝假服务器将提供的假证书。

但不幸的是,您在这种情况下尝试使用的信任管理器似乎不喜欢您的服务器向其提供的证书。由于信任所有信任管理器允许您建立连接,这意味着您的服务器确实具有证书并且能够执行 SSL 通信,但您的信任管理器不喜欢该证书的某些内容。这几乎肯定不是 LDAP SDK 的问题,因为如果您使用相同的信任存储,任何其他 LDAP API 也会出现同样的问题。

如果您查看结果,它会显示一条消息“未找到证书路径的信任锚”。这意味着在信任存储中找不到服务器正在使用的证书或其任何颁发者的证书。您需要将服务器证书(或其颁发者之一的证书)导入到您正在使用的信任存储中。听起来你已经尝试这样做了,但由于它不起作用,那么它的完成方式一定不太正确。我建议与目录服务器管理员合作,以确保您尝试根据服务器配置导入正确的证书。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 UnboundID SDK 和 SSL 证书文件连接到 Android 应用程序中的 LDAP 服务器 的相关文章

随机推荐

  • BERT 微调后得到句子级嵌入

    我遇到了这个page https colab research google com github google research bert blob master predicting movie reviews with bert on
  • SQL - 秒到天、小时、分钟、秒[重复]

    这个问题在这里已经有答案了 可能的重复 在sql server 2005中将秒转换为分钟和秒的有效方法 https stackoverflow com questions 2316288 efficient way to convert s
  • ZOC 终端:文本已被剪切到页面的一半

    我使用安装在 Windows 7 上的 ZOC 终端来与具有 Linux 操作系统的设备进行通信佐克图片 https i stack imgur com i3zzl jpg 通过终端进行的通信效果很好 但最近文本已被剪切到页面的一半 附图
  • 多个密码登录:好还是坏

    我正在寻求创建我能想到的最灵活的用户登录系统 并且正在寻找一些想法的反馈 系统目前还有 OpenID 集成选项 我正在修改我的一个用户登录系统 这个概念突然击中了我 很多人都很难记住一个密码 我认识的大多数人都有一些在不同网站上使用的密码
  • 如何从头开始创建/编写一个简单的 XML 解析器?

    如何从头开始创建 编写一个简单的 XML 解析器 我想知道什么是简化的基本英语步骤 而不是代码示例 一个好的解析器是如何设计的 我知道正则表达式不应该在解析器中使用 但是正则表达式在解析 XML 中的作用有多大 推荐使用什么数据结构 我应该
  • 从 Java 调用 PL/SQL 函数时出现“SQLException: ORA-06550”

    我想使用 Java 从数据库检索数据并显示它 因此我创建了这个 PL SQL 函数 它返回一个游标 create or replace function std getInfoFunc return types cursortype as
  • WinForm UI 组件层顺序

    当我们在WinForms中添加任何UI或容器时 后添加的组件会覆盖先添加的组件 我们可以说它处于更高的层 添加组件后如何更改层顺序或组件顺序 当您将多个控件放置在同一位置时 一个控件将位于顶部 另一个控件将位于下方 通常这是由于一个小错误造
  • 如何构建 clang/examples/PrintFunctionNames?

    我需要一些简单的例子来开始使用 clang 我下载了 llvm 和 clang 并构建了 mkdir llvm build cd llvm build llvm configure make 我尝试从 clang 示例构建 PrintFun
  • 如何在 Powershell 中迭代 XML?

    我在文本文件中有这个 XML 文档
  • 简单的 Admob 问题

    我长期以来一直关注这个很棒的网站 它多次帮助了我 我即将发布这款基于 OpenGL ES 的 Android 2d 游戏 我收到了与 admob 相关的问题 我在游戏的所有不同屏幕 主菜单 游戏内 帮助屏幕 上使用相同的广告单元 可以这样做
  • 无法在模拟器中启动 AVD。 ?安卓工作室

    我的模拟器未运行并给出下图中的错误 错误图像 https i stack imgur com wexwy png 并在运行窗口进行测试 C Users Wahlah AppData Local Android sdk tools emula
  • 有没有一种简单的方法可以使用 OAuth2 访问 Quickbooks API?

    我只需要使用 C API 访问我的 Quickbooks Online QBO 公司中的数据 但现在他们已经转向 OAuth2 它看起来非常复杂 例如 它建议我需要一个重定向 URI 来接收授权代码 但我正在编写一个简单的控制台应用程序来将
  • iOS 媒体播放控制通知

    I am new to iOS and developing a cross platform app with Flutter I am trying to play audio from network URL which i foun
  • 所有标准 .net 4.5 库 (dll) 的列表 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在哪里可以找到所有标准 NET 程序集 dll 文件 的完整列表 注意 有一个list https msdn microsoft co
  • 反应导航和组件生命周期

    我有一个使用反应导航的 React Native 应用程序 在我的一个屏幕中 我使用相机读取 QR 码 效果很好 但我必须使用 setState camera false 来防止多次加载 QR 码 通常 它有效 即使从主菜单重新进入页面后也
  • 找不到react-redux上下文值;请确保组件包装在 Provider 中

    我正在尝试react native with redux我遇到了一些问题 我把NavigationContainer with Provider但仍然得到 错误 找不到react redux上下文值 请确保该组件包裹在
  • 如何在 C# 控制台应用程序中永久保存用户给出的输入?

    我正在创建一个应用程序 它接受用户的输入并将其以表格的形式永久保存 Console Write n tEnter roll no n t v Convert ToInt32 Console ReadLine a i setroll v Co
  • 在Lua 4中将十进制转换为十六进制?

    我发现这个公式可以在Lua中将十进制数转换为十六进制颜色值 http lua users org lists lua l 2004 09 msg00054 html http lua users org lists lua l 2004 0
  • 尽管启用了计费功能,Google API 密钥仍达到最大请求限制

    我相信我已尽一切努力正确设置对距离矩阵 API 的访问 首先 我创建了一个项目和一个计费帐户 该计费帐户已在此项目上启用 接下来 我启用了距离矩阵 API 并创建了一个不受限制的 目前 API 密钥 这就是我调用 Google 距离矩阵 A
  • 使用 UnboundID SDK 和 SSL 证书文件连接到 Android 应用程序中的 LDAP 服务器

    我正在尝试在 Android 应用程序中连接到 LDAP 服务器 并使用 UnboundID SDK 最近 从不安全的 LDAP 更改为安全的 LDAP 我必须相应地更改应用程序 我已获得 SSL 证书文件来进行验证 我已经使用该文件来制作