CL+SSL SSL错误:不安全的传统重协商已禁用。如何绕过或解决?

5
我正在尝试使用Common Lisp(SBCL)访问https端点以获取一些数据。有一段时间这个操作毫无问题。突然有一天我开始收到以下错误:
SSL error queue:
error:0A000152:SSL routines::unsafe legacy renegotiation disabled
   [Condition of type CL+SSL::SSL-ERROR-SSL]

我使用了drakma和dexador两种库,但都遇到了同样的错误。通过openssl我确认我尝试连接的服务器不支持重新协商。从openssl s_client -connect命令可以看出。
New, TLSv1/SSLv3, Cipher is AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS NOT supported

我使用的是OSX操作系统,我的 OpenSSL 版本是 LibreSSL 2.8.3。

根据我的理解,我的客户端正在尝试重新协商,但是服务器正在拒绝它。此时我真的不知道该从哪里入手,也不确定问题实际上是在哪个级别,是在 OpenSSL、CL+SSL 还是基于 CL+SSL 的 HTTP 客户端库上。有没有一些方法可以禁用重新协商,或者强制建立新连接?有没有一些设置我漏掉了?


解决这个问题有什么好的方法吗? - Varesh
不安全的重新协商可以使用“-legacy_renegotiation”参数再次启用。例如:openssl s_client -connect www.google.de:443 -legacy_renegotiation - Sephiroth
1个回答

2

2
你好!我从创建一个新的conda环境并运行“conda install -c conda-forge gdal”中得到了openssl版本3。我不明白你的评论中如何启用SSL_OP_LEVACY_SERVER_CONNECT。这是一个标志,你在“make” openssl时修改,还是在配置文件中更改的内容? - Zoltan
1
SSL_CONF_cmd的手册显示了相应的命令行选项“-legacy_server_connect”。 - eel ghEEz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接