将 HttpClient 与 SSL 和证书结合使用

2023-12-09

虽然我已经熟悉 HTTPS 和 SSL 的概念,但我最近开始一些开发,发现我有点困惑。

要求是我编写一个小型 Java 应用程序,该应用程序在连接到扫描仪的机器上运行。扫描文档时,会拾取该文档并将文件(通常为 PDF)通过互联网发送到我们的应用程序服务器,然后由应用程序服务器对其进行处理。我使用 Apache Commons 库和 HTTPClient 编写了该应用程序。

第二个要求是通过 SSL 连接,需要证书。按照 HTTPclient 页面上的指导,我使用贡献页面中的 AuthSSLProtocolSocketFactory。

构造函数可以采用密钥库、密钥库密码、信任库和信任库密码。作为初步测试,我们的 DBA 在我们的一个开发网络服务器上启用了 SSL,并为我提供了一个 .p12 文件,当我将其导入 IE 时,我可以成功连接。

我对密钥库和信任库以及使用密钥工具需要采取哪些步骤感到有点困惑。我尝试将 p12 导入密钥库文件,但收到错误:

keytool error: java.lang.Exception: Input not an X.509 certificate

我遵循了将 p12 导入 Internet Explorer 并导出为 .cer 的建议,然后我可以将其成功导入到密钥库中。当我将其作为 AuthSSLProtocolSocketFactory 的密钥库参数提供时,我得到一个无意义的错误,但是如果我尝试将它作为信任库,它看起来读取得很好,但最终我得到了

Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: bad_certificate

我不确定我是否错过了一些步骤,我完全误解了 SSL 和相互身份验证,或者这是服务器端的错误配置。

任何人都可以提供建议或向我指出可以帮助我解决这个问题的资源吗?


密钥库保存您的私钥和关联的证书。信任库保存您信任的证书,因此可用于证书路径构建和验证。

以下是一些可能有用的链接:

java.lang.Exception:输入不是 X.509 证书

将私钥和证书导入 Java Key Store

配置密钥库和信任库

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

将 HttpClient 与 SSL 和证书结合使用 的相关文章

随机推荐

  • 如何缓存 angularjs 部分?

    在 angularjs 生产中缓存部分的最简单 现代的方法是什么 目前代码如下 routeProvider when error templateUrl partials error html controller ErrorCtrl 其中
  • Python 使用正则表达式解析 HTML

    我正在尝试浏览网站的 HTML 并解析它以查找班级的最大注册人数 我尝试检查 HTML 文件的每一行中的子字符串 但这会尝试解析错误的行 所以我现在使用正则表达式 我有 t t t t t t t td class odd 0 9 0 9
  • Django:注释每个对象的重复值数量的计数

    我有一个名为 Product 的模型 如下所示 产品可以具有相同的字段 bc sku class Product models Model bc sku models IntegerField null True blank True pr
  • 图书馆?静止的?动态的?还是框架?项目在另一个项目中

    我有一个现有的 iOS 应用程序 并且想要添加大量代码 这些代码是我作为另一个项目开发的 只是为了便于测试 新块基本上涉及将图像保存到各种共享服务等 因为共享代码需要大量测试和未来更新 所以我想知道将该代码块合并到我现有的应用程序中的最佳方
  • Code First 和 EF 5.0 不加载导航属性

    我正在尝试通过 Code First 和 EF 5 0 加载导航属性子对象加载为 null 下面是代码 Table ls roles public class Role Required Key public int RoleID get
  • 如何将 Double[] 转换为 double[]?

    我正在实现一个接口 其功能类似于可以包含某种类型的对象的表 该接口指定了以下功能 double getDoubles int columnIndex 让我困惑的是 在我的实现中 我将表数据存储在二维中Object array Object
  • 如何使用 Python 创建 Word 文档? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我想使用 Python 创建 Word 文档 但是 我想尽可能多地重复使用现有的文档创建代码 我目前正在使用 XSLT 生成 HTML 文件以编程方
  • 如何在 PostgreSQL 中快速将二维数组取消嵌套到一维数组中?

    我有一个使用 Apache Madlib 计算的非常大的数组 我想对该二维数组中的每个数组应用一个操作 我找到了可以帮助我解除嵌套的代码这个相关答案 然而 在这个非常大的 2d 数组 150 000 1d float 数组 上 代码非常慢
  • 从数据帧中删除单变量异常值(+-3 SD)

    我对 R 很陌生 以至于我很难在其他人的问题中找到我需要的东西 我认为我的问题太简单了 以至于没有人费心去问 创建一个新数据框的最简单的代码是什么 该数据框排除单变量异常值的数据 我将其定义为距离其条件平均值 3 个 SD 的点 在其条件内
  • 在文本框中反向书写

    我想像乌尔都语一样在文本框中以相反的顺序输入 是否有任何输入属性来做到这一点或任何代码 方向 rtl 只从末尾开始 但输入文本是原来的 它不会反转在文本框中查找 只需使用简单的 CSS input type text text align
  • 如何检测 Web 应用程序是否正在 Electron 中运行

    我正在尝试在电子应用程序上提供真正的反应应用程序 这并不意味着我正在使用 React 开发电子应用程序 我创建了一个反应应用程序并将其注入到电子应用程序中 与 Slack 一样 它将充当 Web 应用程序和桌面应用程序 但我对发送桌面通知感
  • istream >> ostream << 使用 * 指针重载运算符

    如果 gt gt 和 在标题中 friend std istream operator gt gt std istream ins Classname e friend std ostream operator lt lt std ostr
  • 如何根据确定的属性值对 JavaScript 中的对象数组进行排序?

    所以我有这个通知对象数组 必须按严重性降序排序 即Error gt Warning gt Information Example var notificationArray code 103 severity Error code 104
  • Java switch语句多种情况

    只是想弄清楚如何在 Java switch 语句中使用多种情况 这是我正在尝试做的一个例子 switch variable case 5 100 doSomething break 与必须做的事情相比 switch variable cas
  • 给定年、月、日、周数如何查找日期?(基于Sql Server 2005集)

    给定年 月 日 周数 如何查找日期 例如 year 2010 month Feb day Wed week number 4 how can I find that the date is 24 02 2010 Thanks 尝试这个 gi
  • 在 Spring Security Oauth2 中使用 RemoteTokenServices 配置资源服务器

    我正在尝试使用 spring security oauth2 实现授权服务器和资源服务器 到目前为止 我已经成功设置了授权服务器 并且由于我不想共享 jdbc 令牌存储 所以我尝试使用 remoteTokenService 来验证我的令牌
  • 为什么这个数据绑定不起作用?

    我有一个包含点列表的 ViewModel 类 我试图将其绑定到折线 折线拾取初始点列表 但即使我实现了 INotifyPropertyChanged 也不会注意到何时添加其他点 怎么了
  • 初始化二维字符数组

    我试图用这个颂歌初始化二维字符数组 int x 4 int y 4 char plg x y o o o o o o o o o o o o o o o o 但是这段代码会抛出错误error excess elements in char
  • 如何让 MSI 安装程序在卸载服务时运行一些代码

    我在卸载服务时遇到了一些问题 我想执行一些操作 我已将代码添加到 System ServiceProcess ServiceProcessInstaller BeforeUninstall 事件中 并且到覆盖方法 OnBeforeUnins
  • 将 HttpClient 与 SSL 和证书结合使用

    虽然我已经熟悉 HTTPS 和 SSL 的概念 但我最近开始一些开发 发现我有点困惑 要求是我编写一个小型 Java 应用程序 该应用程序在连接到扫描仪的机器上运行 扫描文档时 会拾取该文档并将文件 通常为 PDF 通过互联网发送到我们的应