将ECDHE TLS与Boost ASIO一起使用

时间:2018-03-20 02:58:12

标签: c++ ssl boost openssl ecdhe

TL; DR版本

我想知道:

  • 在哪里定义ECDHE的使用规范(在SSL上下文或其他地方的证书参数或服务器配置中)?
  • 在非自制的证书设置中,谁负责定义ECDHE公共和私人信息(最终用户或证书提供商)?
  • 是否可以在不引起证书问题的情况下制作似乎不使用ECDHE的现有证书?
  • 是否有人在Boost :: ASIO中使用SSL并使用ECDHE设置?

更长的版本

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

阅读TLS如何工作让我发现我们的服务器的某些部分阻止我们使用ECDHE- *密码套件(iOS似乎想要)来服务TLS这一事实 - 但是我在计算时遇到了困难如何将ASIO和我们当前的证书/密钥与ECDHE服务相结合。

我尝试了什么:

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

此时我不确定该问题的真正所在(在ASIO,证书或我如何将它们放在一起)以及互联网上我发现的大部分信息与家庭有关 - 从头开始滚动所有内容,而不是使用现有的证书。

2 个答案:

答案 0 :(得分:1)

更新11/05/19

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

原始答案

我似乎找到了任何googlers的答案 - 在撰写本文时,ASIO似乎并不支持ECDHE。来自主回购的This issue表明,ECDHE已获得支持,但尚未实施。

答案 1 :(得分:0)

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

+1引起Boost ASIO维护人员的注意;他已经很慢了。