OpenSSL 无法建立 SSL 连接,因为协议不受支持

Oma*_*lid 1 ssl openssl openssl-engine ubuntu-18.04 ubuntu-20.04

我正在尝试从这里构建 OpenCog ,当我发出此命令时

octool -rdcpav -l default
Run Code Online (Sandbox Code Playgroud)

它构建了所有东西,然后进入了安装 Link-Grammar 的步骤,这发生了

[octool] Installing Link-Grammar....
--2020-06-13 10:09:36--  http://www.abisource.com/downloads/link-grammar/current/
Resolving www.abisource.com (www.abisource.com)... 130.89.149.216
Connecting to www.abisource.com (www.abisource.com)|130.89.149.216|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://www.abisource.com/downloads/link-grammar/current/ [following]
--2020-06-13 10:09:37--  https://www.abisource.com/downloads/link-grammar/current/
Connecting to www.abisource.com (www.abisource.com)|130.89.149.216|:443... connected.
OpenSSL: error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol
Unable to establish SSL connection.
Run Code Online (Sandbox Code Playgroud)

我在 ubuntu 20.04 LTS

dav*_*085 14

www.abisource.com仅支持 TLS 1.0 版,该版本现已损坏(或至少已减弱)且已过时。根据它的标题,它是Apache 2.2.15 (Fedora)2010 年的!

因此,这似乎与OpenSSL v1.1.1 ssl_choose_client_version 不受支持的协议相同,除了 Ubuntu 而不是 Debian 和 wget(由 octool 使用)而不是 openvpn。在那里尝试接受的 anser:/etc/ssl/openssl.cnf在 [system_default_sect] 下编辑以降级 MinProtocol=TLSv1 和可能的 CipherString=DEFAULT:@SECLEVEL=1 -- 服务器的 DHE 密钥是 1k,我不记得它是否适用于级别 2,尽管它的证书是荒谬的 RSA 4k!

更新:好的,我下载并安装了 Ubuntu 20.04,包括 libssl1.1 的源代码并查看了它,他们没有在这里保留 Debian 方法,他们对其进行了更改。具体来说,他们没有将 openssl.cnf 文件更改为需要 TLSv1.2,而是编译了OpenSSL/libssl 以制作默认的SECLEVEL 2让 SECLEVEL 2 强制 TLSv1.2(它没有上游)。

但是,您仍然可以通过openssl.cnf添加所需的(弱)配置来修复它:

  • 在默认部分的某处,即在以 开头的第一行之前[,添加一行

    openssl_conf = openssl_configuration
    
    Run Code Online (Sandbox Code Playgroud)

    我喜欢把它放在最上面,但这只是我。

  • 从技术上讲,在任何部分边界处,但最简单的是在最后添加三个新部分:

    [openssl_configuration]
    ssl_conf = ssl_configuration
    [ssl_configuration]
    system_default = tls_system_default
    [tls_system_default]
    CipherString = DEFAULT:@SECLEVEL=1
    
    Run Code Online (Sandbox Code Playgroud)

请注意,由于 MinProtocol 尚未存在,因此您无需添加它(代码默认值是可以的),但如果您愿意,您可以添加它。

现在它的工作原理:

$ wget https://www.abisource.com/
--2020-06-20 05:11:11--  https://www.abisource.com/
Resolving www.abisource.com (www.abisource.com)... 130.89.149.216
Connecting to www.abisource.com (www.abisource.com)|130.89.149.216|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7687 (7.5K) [text/html]
Saving to: ‘index.html’

index.html          100%[===================>]   7.51K  --.-KB/s    in 0.002s

2020-06-20 05:11:12 (3.90 MB/s) - ‘index.html’ saved [7687/7687]
Run Code Online (Sandbox Code Playgroud)

正如你所评论的,这是一个全球性的变化。您可以通过编辑 octool 的副本以将选项添加--ciphers=DEFAULT:@SECLEVEL=1wget命令中来针对此特定操作更改它。用原来的openssl.cnf:

$ wget --ciphers=DEFAULT:@SECLEVEL=1 https://www.abisource.com/
--2020-06-20 05:15:21--  https://www.abisource.com/
Resolving www.abisource.com (www.abisource.com)... 130.89.149.216
Connecting to www.abisource.com (www.abisource.com)|130.89.149.216|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7687 (7.5K) [text/html]
Saving to: ‘index.html.1’

index.html.1        100%[===================>]   7.51K  --.-KB/s    in 0s

2020-06-20 05:15:22 (330 MB/s) - ‘index.html.1’ saved [7687/7687]
Run Code Online (Sandbox Code Playgroud)

  • @PatrickMevzek:请参阅编辑(如果没有自动通知您)。欢呼。 (2认同)