【问题标题】:How to reject weak DH parameters in an OpenSSL client?如何拒绝 OpenSSL 客户端中的弱 DH 参数?
【发布时间】:2015-10-05 11:04:23
【问题描述】:

目前,客户端模式下的 OpenSSL 仅在服务器选择的 DH 参数的密钥长度小于 768 位(源代码中硬编码)时才会停止握手。

在我的客户端中,如果服务器选择的 DH 参数的密钥长度小于 2048 位,我想停止握手。首选方法是通过 API 设置,例如OpenSSL 公开的选项设置。

有没有办法使用公共 API 设置最小密钥长度?

【问题讨论】:

标签: openssl diffie-hellman


【解决方案1】:

有没有办法使用公共 API 设置最小密钥长度?

是的(或者我应该说,“我相信”)。使用您的 Diffie-Hellman 回调。回调设置为SSL_CTX_set_tmp_dh_callbackSSL_set_tmp_dh_callback

通常在服务器上使用 Diffie-Hellman 回调来生成其密钥。但是根据 OpenSSL 的 SSL_CTX_set_tmp_dh_callback(3) 手册页,它的“...在tmp_dh_callback...需要 DH 参数时使用”。

有关在服务器上下文中使用回调的示例(应该类似于在客户端中使用它),请参阅'No Shared Cipher' Error with EDH-RSA-DES-CBC3-SHA。它执行密钥长度检查。

【讨论】:

  • 我已经在服务器模式下使用这些功能,但它们在客户端模式下被 openssl 忽略。服务器首先选择 dh 参数并与客户端协商。
  • @user3027786 - 好的,谢谢。在客户端生成用作公钥的随机值显然是在选择一个 DH 参数,因此某处存在错误。 (我不知道它是否应该工作并且它的实现错误;或者它不应该工作并且它的文档错误)。你是想用 OpenSSL 提交错误报告,还是让我来做?
  • @user3027786 - 确认。另请参阅 OpenSSL 用户邮件列表中的 How to enforce DH field size in the client?。在提交内容之前,让我们先弄清楚问题的实际所在。
  • @user3027786 - 针对文档提交了一个错误;见Doc Bug: SSL_CTX_set_tmp_dh_callback (and friends) and client code
  • 谢谢,我关注How to enforce DH field size in the client?。 @Viktor Dukhovni 有评论:这应该可以通过配置实现,但没有详细说明如何?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-24
  • 2019-02-28
  • 1970-01-01
相关资源
最近更新 更多