【问题标题】:C# .NET Core websocket ssl issue - dh key too smallC# .NET Core websocket ssl 问题 - dh 密钥太小
【发布时间】:2020-06-10 15:47:00
【问题描述】:

我在 Centos 7 上使用 openssl 1.0.2 的 C# websocket 客户端应用程序遇到问题。我们有一个应用程序可以在我们的 Windows 机器上毫无问题地连接到(第三方)websocket 服务器。当我们尝试从我们的 linux 机器连接到第三方的生产环境时,它会失败(尽管我们可以很好地连接到他们的 UAT ws 服务器)。该错误与“dh key too small”有关。

Afaik,问题的根本原因可能是第三方生产服务器正在运行过时的 openssl 版本。我无法控制这一点,也无法强制他们升级。

如果我(在我的 python 代码中)更改 ssl 密码字符串(例如 ssl._DEFAULT_CIPHERS += 'ALL:!EXPORT:!LOW:!aNULL:),我可以使用 python 测试应用程序成功连接到第三方生产服务。 !eNULL:!SSLv2:!DH')。 '!DH' 部分似乎是解决此问题的一种方法。我还应该注意 - 这都是在私人网络中(没有公共互联网公开)。

对于 linux 环境中的 .NET Core 应用,我们如何以类似的方式更新密码或达到相同的效果。我们需要对 openssl 进行更改吗?有没有办法在我们的 C# 代码中做到这一点。任何建议将不胜感激!

谢谢

【问题讨论】:

    标签: c# .net ssl websocket openssl


    【解决方案1】:

    感谢answer received on Ask Ubuntu,我设法通过以下方式解决了这个问题:

    • 复制openssl.cnf文件
    • 在复制文件的顶部添加 openssl_conf = default_conf

    • 在末尾添加:

    [ default_conf ]
    
        ssl_conf = ssl_sect
    
        [ssl_sect]
    
        system_default = ssl_default_sect
    
        [ssl_default_sect]
        MinProtocol = TLSv1.2
        CipherString = DEFAULT:@SECLEVEL=1
    
    • 在 OPENSSL_CONF 环境变量设置为的情况下运行项目 修改后的配置文件的路径

    【讨论】:

      猜你喜欢
      • 2020-06-25
      • 1970-01-01
      • 2014-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-27
      相关资源
      最近更新 更多