OpenSSL 1.0.2k 默认删除了 3DES 密码,这意味着某些旧版浏览器(例如 Windows XP 上的 IE8)不再受支持。
根据OpenSSL 官方博客,要重新启用 3DES 密码,我们应该enable-weak-ssl-ciphers
在编译时添加标志。
那么,该如何应对呢?编译时还需要其他标志吗?另外,我可以用自编译的启用 3DES 的版本覆盖 DPKG(Debian 软件包管理工具)安装的 Openssl 吗?如果可行,该怎么做?
谢谢 :-)
答案1
由于我还没有任何有用的答案来解决该问题,因此我想分享我对此所做的事情。
首先,您应该获得用于构建软件的工具和 OpenSSL 的依赖项。(例如在类似 Debian 的发行版上)
apt install build-essential make zlib1g-dev libxml2-dev
然后获取最新版本的 OpenSSL,验证签名并使用选项进行编译enable-weak-ssl-ciphers
,如果您想重新获得对 GOD D**N Microsoft IE6 的过时 SSLv3 的支持,enable-ssl3
还enable-ssl3-method
应该将其附加到编译选项中。
不要忘记shared
标志或libssl.so
不会libcrypto.so
被构建,并使用-Wl,-rpath=
来告诉链接器(ld
)链接哪个目录中的共享库。
wget https://www.openssl.org/source/openssl-1.0.2o.tar.gz
sha256sum openssl-1.0.2o.tar.gz
curl https://www.openssl.org/source/openssl-1.0.2o.tar.gz.sha256
tar -zxvf openssl-1.0.2o.tar.gz
cd openssl-1.0.2o/
./config --prefix=/opt/openssl-1.0.2 \
--openssldir=/etc/ssl \
shared enable-weak-ssl-ciphers \
-Wl,-rpath=/opt/openssl-1.0.2/lib
make
make install
此后,您的自定义版本的 OpenSSL 将被安装到/opt/openssl-1.0.2
(而不是覆盖您的操作系统附带的版本)。
您的应用程序可能还需要重新编译,使用这些选项强制链接器链接您的自定义版本的 OpenSSL 库(覆盖配置/etc/ld.so.conf
或PKGCONFIG
变量)
LDFLAGS="-L/opt/openssl-1.0.2/lib -lssl -lcrypto -Wl,-rpath=/opt/openssl-1.0.2/lib"
您也可以尝试 OpenSSL 1.1.0,因为现在大多数应用程序都支持它的 API。
答案2
你会需要:
- 重建Debian 的 OpenSSL 软件包— 您的 Debian 版本中包含的版本。
- 将其托管在某个地方,以使它可以在您想要替换原始机器的所有机器上使用。
- 确保每次库存 OpenSSL 包获得安全更新时(因此其新的修补版本通过安全更新渠道发布)都重建自定义版本。
不幸的是,上述所有步骤都需要进一步扩展,所以我的主要问题是,你是否当然在现有的 Debian 版本中禁用了三重 DES?在我的 Stretch 系统上,我有:
$ openssl version
OpenSSL 1.1.0c 10 Nov 2016
$ openssl list -cipher-algorithms | grep -i des
DES => DES-CBC
DES-CBC
DES-CFB
DES-CFB1
DES-CFB8
DES-ECB
DES-EDE
DES-EDE-CBC
DES-EDE-CFB
DES-EDE-ECB => DES-EDE
DES-EDE-OFB
DES-EDE3
DES-EDE3-CBC
DES-EDE3-CFB
DES-EDE3-CFB1
DES-EDE3-CFB8
DES-EDE3-ECB => DES-EDE3
DES-EDE3-OFB
DES-OFB
DES3 => DES-EDE3-CBC
DESX => DESX-CBC
DESX-CBC
des => DES-CBC
DES-CBC
DES-CFB
DES-CFB1
DES-CFB8
DES-ECB
DES-EDE
DES-EDE-CBC
DES-EDE-CFB
des-ede-ecb => DES-EDE
DES-EDE-OFB
DES-EDE3
DES-EDE3-CBC
DES-EDE3-CFB
DES-EDE3-CFB1
DES-EDE3-CFB8
des-ede3-ecb => DES-EDE3
DES-EDE3-OFB
DES-OFB
des3 => DES-EDE3-CBC
des3-wrap => id-smime-alg-CMS3DESwrap
desx => DESX-CBC
DESX-CBC
id-smime-alg-CMS3DESwrap
$ openssl list -disabled
Disabled algorithms:
BLAKE2
HEARTBEATS
IDEA
MD2
MDC2
RC5
SCTP
SSL3
ZLIB
对我来说,这表明我拥有比您所谈论的更新的 OpenSSL 版本,并且它支持 3DES。
那么,你测试了吗?