C++ 使用带升压ASIO的ECDHE TLS

C++ 使用带升压ASIO的ECDHE TLS,c++,ssl,boost,openssl,ecdhe,C++,Ssl,Boost,Openssl,Ecdhe,TL;DR版本 我想知道: ECDHE的使用规范是在哪里定义的(在证书参数或SSL上下文的服务器配置中,或其他地方) 在非自制证书设置中,谁负责定义ECDHE公共和私人信息(最终用户或证书提供商) 是否可以创建一个似乎未使用ECDHE的现有证书,而不会导致证书出现问题 有没有人在Boost::ASIO中使用SSL进行ECDHE设置的例子 较长的版本 我们一直在构建一个应用程序,该应用程序使用来自外部证书颁发机构的适当付费证书。该应用程序使用基于Boost ASIO和Boost Beast的家

TL;DR版本

我想知道:

  • ECDHE的使用规范是在哪里定义的(在证书参数或SSL上下文的服务器配置中,或其他地方)
  • 在非自制证书设置中,谁负责定义ECDHE公共和私人信息(最终用户或证书提供商)
  • 是否可以创建一个似乎未使用ECDHE的现有证书,而不会导致证书出现问题
  • 有没有人在Boost::ASIO中使用SSL进行ECDHE设置的例子
较长的版本

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

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

我所尝试的:

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

在这一点上,我不确定问题真正在哪里(在ASIO、证书或我如何将其组合在一起),我在互联网上找到的大多数信息都与从头开始的家庭滚动有关,而不是与现有证书一起工作

19年5月11日更新

通过ECDHE为ASIO引入更改。将需要等待一段时间,看看它将进入哪个Boost-lib版本

原始答案


我似乎已经为谷歌找到了答案——在撰写本文时,ASIO似乎并不支持ECDHE。从主要回购协议中可以看出,ECDHE可能会得到支持,但尚未实施

这里有一个链接,指向自2016年以来一直等待合并的ECDHE实施:


+1.引起增压ASIO维护人员的注意;他做得很慢。

Noice find-将更新我原来的自我回答,现在看来已经取得了进展