ssl - boost::asio 无法仅接受 TLS 1.2?

标签 ssl openssl boost-asio libtorrent

所以我尝试修改第三方(libtorrent)以仅接受 TLS 1.2 协议(protocol)。

SSL 上下文设置的一部分:

boost::shared_ptr<context> ctx = boost::make_shared<context>(boost::ref(m_ses.get_io_service()), context::tlsv12)

ctx->set_options(context::default_workarounds
        | boost::asio::ssl::context::no_sslv2
        | boost::asio::ssl::context::no_sslv3
        | boost::asio::ssl::context::no_tlsv1
        | boost::asio::ssl::context::no_tlsv1_1
        | boost::asio::ssl::context::single_dh_use);

但是,当我测试与 OpenSSL s_client 的连接时,它似乎仍然接受 tls 1.0 和 tls 1.1 连接。

我是不是做错了什么?

编辑:在选项中添加了“| boost::asio::ssl::context::no_tlsv1_1”。我意识到我指的是旧的升压引用指南。然而它并没有改变任何东西。

编辑:我刚刚意识到我没有提到此连接是双向/相互身份验证连接。不确定这是否会改变任何事情。

最佳答案

asio::ssl::context 中没有 TLS1.2 常量。但您可以使用 native openssl API 来执行此操作:

#include <openssl/ssl.h>
long ssl_disallowed = SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | SSL_OP_NO_TLSv1_1 | SSL_OP_NO_TLSv1_2;
ssl_disallowed &= ~SSL_OP_NO_TLSv1_2;
SSL_CTX_set_options(ctx.native_handle(), ssl_disallowed);

关于ssl - boost::asio 无法仅接受 TLS 1.2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31005745/

相关文章:

c++ - 无法使用 boost 验证我的自签名证书

c++ - 使用 boost::asio::streambuf 的代码导致段错误

java - 如何消除 Java 安全警告

node.js - 错误 : connect ECONNREFUSED at exports. _errnoException 在 TCPConnectWrap.afterConnect

ssl - Traefik Error forwarding EOF/Bad Gateway (Let's Encrypt 相关)

mysql - 如何从 MySQL .NET Connector 使用 SSL 访问托管在 Amazon RDS 上的 MySQL 数据库

command-line - 如何使用 OpenSSL 为客户端证书创建指定 CA 私钥密码

c++ - 发送 POST 请求

java - key 管理异常 : FIPS mode: only SunJSSE TrustManagers may be used

windows - OpenSSL:使用命令行工具的错误魔数(Magic Number)