将 ECDHE TLS 与 Boost ASIO 结合使用
Using ECDHE TLS with Boost ASIO
TL;DR版本
我想知道:
- ECDHE 的使用规范在哪里定义(在证书参数或 SSL 上下文的服务器配置中,或其他地方)?
- 在非家庭滚动证书设置中,谁负责定义 ECDHE public 和私人信息(最终用户或证书提供商)?
- 是否可以在不引起证书问题的情况下制作似乎未使用 ECDHE 的现有证书?
- 是否有人在 Boost::ASIO 中通过 ECDHE 设置使用 SSL?
加长版
我们一直在构建一个应用程序,该应用程序使用来自外部证书颁发机构的适当付费证书。该应用程序使用基于 Boost ASIO 和 Boost Beast 的自制服务器设置,我们最近才注意到它与 iOS 配合不佳 - ASIO 表示没有共享密码。
阅读 TLS 的工作原理后,我了解到我们服务器的某些部分阻止我们使用 ECDHE-* 密码套件(iOS 似乎想要)来提供 TLS - 但我我很难弄清楚如何让 ASIO 和我们目前的 cert/key 为 ECDHE 服务。
我尝试过的:
- 使用相同的证书和密钥,使用set_tmp_dh将
openssl dhparam
的结果添加到ASIO中,然后指定密码。 Curl 报告说这允许使用 DHE
而不是 ECDHE
的连接。指定仅使用 ECDHE
的密码会导致连接时出错。
- 尝试使用与上述类似的方法将
openssl ecparam
的输出传递给 ASIO。我无法格式化 ASIO 接受的内容。
- 尝试查看是否有一种方法可以将
openssl ecparam
的输出与另一个组合函数一起使用,将原始证书修改为使用 ECDHE
的证书。我从 the OpenSSL wiki 中了解到这一点,建议如果证书不包含行 ASN1 OID: prime256v1
(或类似的命名曲线),则它不适合 ECDHE 使用。
此时我不确定问题真正出在哪里(在 ASIO 中,在证书中或在我如何将它们放在一起)以及我在互联网上可以找到的大部分信息都与从头开始滚动所有内容,而不是使用现有证书。
更新 11/05/19
https://github.com/chriskohlhoff/asio/pull/117 使用 ECDHE 引入了 ASIO 的变化。需要等待一段时间才能看到它变成了哪个 Boost lib 版本。
原答案
我似乎已经为任何谷歌搜索者找到了答案 - 在撰写本文时,ASIO 似乎不支持 ECDHE。 This issue 从主回购协议中可以看出,ECDHE 有望获得支持,但尚未实施。
这是自 2016 年以来一直等待合并的 ECDHE 实现的 link:https://github.com/chriskohlhoff/asio/pull/117。
+1 获得Boost ASIO维护者的关注;他用起来很慢。
TL;DR版本
我想知道:
- ECDHE 的使用规范在哪里定义(在证书参数或 SSL 上下文的服务器配置中,或其他地方)?
- 在非家庭滚动证书设置中,谁负责定义 ECDHE public 和私人信息(最终用户或证书提供商)?
- 是否可以在不引起证书问题的情况下制作似乎未使用 ECDHE 的现有证书?
- 是否有人在 Boost::ASIO 中通过 ECDHE 设置使用 SSL?
加长版
我们一直在构建一个应用程序,该应用程序使用来自外部证书颁发机构的适当付费证书。该应用程序使用基于 Boost ASIO 和 Boost Beast 的自制服务器设置,我们最近才注意到它与 iOS 配合不佳 - ASIO 表示没有共享密码。
阅读 TLS 的工作原理后,我了解到我们服务器的某些部分阻止我们使用 ECDHE-* 密码套件(iOS 似乎想要)来提供 TLS - 但我我很难弄清楚如何让 ASIO 和我们目前的 cert/key 为 ECDHE 服务。
我尝试过的:
- 使用相同的证书和密钥,使用set_tmp_dh将
openssl dhparam
的结果添加到ASIO中,然后指定密码。 Curl 报告说这允许使用DHE
而不是ECDHE
的连接。指定仅使用ECDHE
的密码会导致连接时出错。 - 尝试使用与上述类似的方法将
openssl ecparam
的输出传递给 ASIO。我无法格式化 ASIO 接受的内容。 - 尝试查看是否有一种方法可以将
openssl ecparam
的输出与另一个组合函数一起使用,将原始证书修改为使用ECDHE
的证书。我从 the OpenSSL wiki 中了解到这一点,建议如果证书不包含行ASN1 OID: prime256v1
(或类似的命名曲线),则它不适合 ECDHE 使用。
此时我不确定问题真正出在哪里(在 ASIO 中,在证书中或在我如何将它们放在一起)以及我在互联网上可以找到的大部分信息都与从头开始滚动所有内容,而不是使用现有证书。
更新 11/05/19
https://github.com/chriskohlhoff/asio/pull/117 使用 ECDHE 引入了 ASIO 的变化。需要等待一段时间才能看到它变成了哪个 Boost lib 版本。
原答案
我似乎已经为任何谷歌搜索者找到了答案 - 在撰写本文时,ASIO 似乎不支持 ECDHE。 This issue 从主回购协议中可以看出,ECDHE 有望获得支持,但尚未实施。
这是自 2016 年以来一直等待合并的 ECDHE 实现的 link:https://github.com/chriskohlhoff/asio/pull/117。
+1 获得Boost ASIO维护者的关注;他用起来很慢。