锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / openssl开源 / 如何解决企业代理背后的SSL问题
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
量化预测
股票离线分析软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

如何解决企业代理背后的SSL问题


我在公司的笔记本电脑上使用 Ubuntu 22.04。当我在家工作时,一切都很好。但是,当我在办公室并在公司代理后面工作时,我开始面临 SSL 问题。

我已获得一个证书文件,该文件已导入到我的 Chrome 和 Firefox 浏览器中。这样,我的浏览器就能够正常运行了。但是,curl/wget 和基本上所有其他连接到 HTTPS 的工具都遇到了问题。

wget 失败示例

root@HOST:~# wget -v --no-check-certificate  https://ubuntu.com/server/docs/security-trust-store  --2023-04-07 11:57:11--  https://ubuntu.com/server/docs/security-trust-store  Resolving ubuntu.com (ubuntu.com)... 185.125.190.20, 185.125.190.21, 185.125.190.29, ...  Connecting to ubuntu.com (ubuntu.com)|185.125.190.20|:443... connected.  OpenSSL: error:0A000152:SSL routines::unsafe legacy renegotiation disabled  Unable to establish SSL connection.  

我已经通过运行这些命令从 CLI 添加了证书,但无济于事。

cp myorg.crt /usr/local/share/ca-certificates  update-ca-certificates  

我还缺少什么?感谢帮助。


更多调试信息

root@HOST:/usr/local/share/ca-certificates# openssl s_client -connect ubuntu.com:443 -CApath /etc/ssl/certs/  CONNECTED(00000003)  80BB91E2547F0000:error:0A000152:SSL routines:final_renegotiate:unsafe legacy renegotiation disabled:../ssl/statem/extensions.c:879:  ---  no peer certificate available  ---  No client certificate CA names sent  ---  SSL handshake has read 85 bytes and written 319 bytes  Verification: OK  ---  New, (NONE), Cipher is (NONE)  Secure Renegotiation IS NOT supported  Compression: NONE  Expansion: NONE  No ALPN negotiated  SSL-Session:      Protocol  : TLSv1.2      Cipher    : 0000      Session-ID: 6BC5F74F9BD4FD98F598BFE7D0DFF4DF8D90CB2057DF2E3D6F3AB3138E5EE9D2      Session-ID-ctx:       Master-Key:       PSK identity: None      PSK identity hint: None      SRP username: None      Start Time: 1681111673      Timeout   : 7200 (sec)      Verify return code: 0 (ok)      Extended master secret: yes  ---

 

 

 

“不安全的旧版重新协商”是一个 SSL 标志,在 Openssl v3+ 中默认处于禁用状态。以前的版本(自 ~2010 年起)启用了此标志。

安全的重新协商

OpenSSL 始终尝试使用安全重新协商,如 RFC5746中所述。这可以对抗 CVE-2009-3555 和其他地方描述的前缀攻击。

[...]

已修补的 OpenSSL 客户端和未修补的服务器

如果设置了选项 SSL_OP_LEGACY_SERVER_CONNECT 或 SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION,则已修补的 OpenSSL 客户端与未修补的服务器之间的初始连接和重新协商将成功。如果两个选项均未设置,则与未修补服务器的初始连接将失败。

设置选项SSL_OP_LEGACY_SERVER_CONNECT具有安全隐患;愿意连接到不实施 RFC 5746 安全重新协商的服务器的客户端会受到 CVE-2009-3555 等攻击。

希望确保它们可以连接到未修补的服务器的 OpenSSL 客户端应用程序应始终设置为 SSL_OP_LEGACY_SERVER_CONNECT

要解决此错误,我们需要修改 file/etc/ssl/openssl.cnf

重要信息 对此文件的更改将应用于整个系统。

转到文件末尾,您应该会看到以下几行:

[ssl_sect]  system_default = system_default_sect    [system_default_sect]  CipherString = DEFAULT:@SECLEVEL=2  

由于 OpenSSL v3.0.2 中的缺陷,该标志无效。通过运行 command 检查您的 SSL 版本,第一行包含版本。我有UnsafeLegacyServerConnectopenssl version -a

OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)  built on: Wed May 24 17:12:55 2023 UTC  platform: debian-amd64  

根据您的版本添加以下行,紧跟在该行之后(中间没有空行):CipherString =

对于 SSL v3.0.2 及更早版本
Options = UnsafeLegacyRenegotiation  
对于 SSL v3.0.4+
Options = UnsafeLegacyServerConnect  

https://www.openssl.org/docs/man3.0/man3/SSL_CONF_cmd.html

UnsafeLegacyRenegotiation:允许使用不安全的旧版重新协商。相当于 SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION。

UnsafeLegacyServerConnect:仅允许对 OpenSSL 客户端使用不安全的旧版重新协商。相当于 SSL_OP_LEGACY_SERVER_CONNECT。

使用以下方式测试更改:s_client

echo | openssl s_client -connect ubuntu.com:443  

输出现在应包含服务器证书链,指示连接成功。

替代方案:不允许使用 TLSv1.2

我仅在使用 TLSv1.2 协议时看到此错误。另一种解决方案是设置允许的最低协议版本。为此,不要添加上面的行,而是添加:Options =

MinProtocol = TLSv1.3  

使用上述方法测试更改。s_client

在输出中,您可以识别协议版本,类似于以下内容(密码可能因您连接到的服务器而异):

TLSv1.2 版本
New, TLSv1.2, Cipher is AES256-GCM-SHA384  
TLSv1.3 版本
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384

 

 

 

 

我的指令中有:将 .pem 文件复制到(所以不是 crt 文件,当然除非它是 pem 格式)(cat server.crt server.key >server.pem

/usr/local/share/ca-certificates/  

并执行

sudo update-ca-certificates  

这应该会在需要时将证书添加到 wget 命令。


如果需要,您还可以通过 2 种方式将 wget 与证书(至少)本身一起使用:

wget --ca-certificate={file.pem}  

或将其添加到~/.wgetrc

ca_certificate={file.pem}
友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内劳动服务器公司办公楼一层