gpt4 book ai didi

ssl - 确定协议(protocol)和密码与服务器证书的兼容性

转载 作者:太空宇宙 更新时间:2023-11-03 12:58:58 26 4
gpt4 key购买 nike

我的服务器可能附加了 RSA 或 ECDSA 证书。

在我的代码中,我将 prtocol 方法设置为

sslmethod = SSLv23_server_method();

并使用 SSL_CTX_set_cipher_list() API 设置密码。

问题是当服务器附加到 ECDSA 证书时,如果我通过“RSA”密码,SSL_CTX_set_cipher_list() 不会返回任何错误,尽管“RSA”密码与 ECDSA 证书不兼容。

是否有任何 openssl API 可用于确定我们要设置的密码是否与证书或协议(protocol)兼容?

最佳答案

Is there any openssl API which I can use to find out if the cipher we are going to set is compatible with the certificate or with protocol or not?

如果您编写应用程序并拥有服务器,那么是的,您确实知道会发生什么。但一般情况下是NO,事先不知道,查询不到。您尝试设置一个 channel ,如果失败,则尝试其他方法。

一般来说,没有办法提前知道服务器支持什么密码套件;或服务器证书中绑定(bind)的公钥类型。事实上,无法知道服务器支持哪些协议(protocol)版本(SSLv2、SSLv3、TLS 1.0、TLS 1.1、TLS 1.2 等)。这是 RFC 7405, TLS Fallback Signaling Cipher Suite Value (SCSV) for Preventing Protocol Downgrade Attacks 的原因.

在 2016/2017 年,您最多只能假设:

  • 无 SSLv2、SSLv3;仅 TLS 1.0 及更高版本
  • 来自集合“HIGH:!aNULL:!kRSA:!RC4:!MD5”的密码套件

“!kRSA”是“无 RSA key 传输”,这意味着您只能使用临时 key 交换。如果服务器有 RSA key ,那么它将仅用于身份验证。也就是说, key 将用于在 key 交换期间签署服务器的临时值,以便客户端知道它们是真实的。

关于ssl - 确定协议(protocol)和密码与服务器证书的兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42483560/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com