1

TL;DR 版本

我想知道:

  • 使用 ECDHE 的规范在哪里定义(在证书参数或 SSL 上下文的服务器配置中,或其他地方)?
  • 在非家庭滚动的证书设置中,定义 ECDHE 公共和私人信息(最终用户或证书提供者)的责任是谁?
  • 是否可以制作似乎不使用 ECDHE 的现有证书而不会导致证书出现问题?
  • 有没有人在 Boost::ASIO 中使用带有 ECDHE 设置的 SSL 的例子?

更长的版本

我们一直在构建一个应用程序,该应用程序使用来自外部证书颁发机构的适当付费证书。该应用程序使用基于 Boost ASIO 和 Boost Beast 的自制服务器设置,我们最近才注意到它与 iOS 不兼容 - ASIO 说没有共享密码。

阅读 TLS 的工作原理后,我发现我们的服务器的某些部分阻止我们使用 ECDHE-* 密码套件(iOS 似乎想要)提供 TLS - 但我很难弄清楚如何争取 ASIO 和我们当前的证书/密钥为 ECDHE 服务。

我试过的:

  • 使用相同的证书和密钥,使用set_tmp_dhopenssl dhparam将结果添加到 ASIO 中,然后指定密码。Curl 报告说这允许使用但不允许连接。指定仅使用的密码会在连接时导致错误。DHEECDHEECDHE
  • 尝试openssl ecparam使用与上述类似的方法将输出传递给 ASIO。我无法格式化 ASIO 接受的内容。
  • 尝试查看是否有一种方法可以将 的输出openssl ecparam与另一个组合函数一起使用,将原始证书修改为使用ECDHE. 我从OpenSSL wiki中找到了这一点,建议如果证书不包含该线ASN1 OID: prime256v1(或类似的命名曲线),那么它不适合 ECDHE 使用。

在这一点上,我不确定问题真正出在哪里(在 ASIO、证书中或我如何将它们放在一起),而且我在互联网上可以找到的大多数信息都与从从头开始,而不是使用现有的证书。

4

2 回答 2

2

2019 年 11 月 5 日更新

https://github.com/chriskohlhoff/asio/pull/117使用 ECDHE 对 ASIO 进行了更改。需要等待一段时间才能看到它进入了哪个 Boost lib 版本。

原始答案

我似乎已经为任何谷歌员工找到了答案——在撰写本文时,ASIO 似乎本身并不支持 ECDHE。来自主存储库的这个问题表明 ECDHE 正在获得支持,但尚未实施。

于 2018-03-20T21:42:57.040 回答
0

以下是自 2016 年以来一直等待合并的 ECDHE 实现的链接:https ://github.com/chriskohlhoff/asio/pull/117 。

+1 以引起 Boost ASIO 维护者的注意;他一直很慢。

于 2019-05-01T14:36:09.293 回答