openssl1.0.1u中没有SSL_CTX_set1_sigalgs_list,如何实现功能
时间: 2023-10-10 14:12:55 浏览: 64
`SSL_CTX_set1_sigalgs_list` 是在 OpenSSL 1.0.2 版本中引入的,如果您的 OpenSSL 版本较低,则无法使用该函数。但是,您可以通过其他方式实现相同的功能。
您可以使用 `SSL_CTX_set_cipher_list` 函数来设置加密套件列表,该列表将限制可以使用的签名算法。您可以将签名算法名称添加到加密套件列表中,以限制可以使用的签名算法。例如,要限制使用 SHA256 和 SHA384 签名算法,您可以将以下内容添加到加密套件列表中:
```
SSL_CTX_set_cipher_list(ctx, "HIGH:!aNULL:!kRSA:!PSK:!SRP:!MD5:!RC4:!SHA1:@STRENGTH:!SHA256:!SHA384");
```
这将限制可以使用的加密套件为“HIGH”,并将禁用所有具有 NULL、RSA、PSK、SRP、MD5、RC4 和 SHA1 签名算法的套件。此外,通过使用“!SHA256”和“!SHA384”选项,将限制可以使用的签名算法为 SHA256 和 SHA384。
需要注意的是,使用 `SSL_CTX_set_cipher_list` 函数设置加密套件列表时,需要小心确保列表中的加密套件和签名算法符合您的要求。否则,可能会导致安全漏洞。
相关问题
openssl1.0.1中没有SSL_CTX_set1_sigalgs_list(ctx, "RSA+SHA256"),如何实现
如果你使用的是 OpenSSL 1.0.1 版本,那么可以通过以下方式实现 SSL_CTX_set1_sigalgs_list(ctx, "RSA+SHA256") 的功能:
1. 手动设置支持的签名算法列表。可以通过以下代码设置:
```
static const char *sigalgs_list = "RSA+SHA256"; // 支持的签名算法列表
static int sigalgs_cb(SSL *ssl, const unsigned char **sig, size_t *siglen, const EVP_MD *digest)
{
// 判断签名算法是否支持
if (ssl_sigalg_supported(ssl, digest))
return tls12_sigalgs_list_from_string(sigalgs_list, sig, siglen);
else
return -1;
}
// 设置 SSL_CTX 的回调函数
SSL_CTX_set_verify(ssl_ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, NULL);
SSL_CTX_set_cert_verify_callback(ssl_ctx, sigalgs_cb, NULL);
```
2. 升级 OpenSSL 版本。如果你的应用程序对 OpenSSL 版本没有特殊要求,建议升级至 OpenSSL 1.0.2 或更高版本。在 OpenSSL 1.0.2 版本中,已经支持了 SSL_CTX_set1_sigalgs_list 函数。
openssl3.0中X509_STORE_CTX的用法
在 OpenSSL 3.0 中,X509_STORE_CTX 用于存储验证 X509 证书链的上下文信息,其主要作用是在证书链的验证过程中保存验证的状态信息,以及提供各种操作的接口,包括从不同源获取证书、验证证书链、处理证书策略等。
X509_STORE_CTX 包含了验证证书链所需的全部信息,包括待验证的证书(X509),当前证书的颁发者(X509),证书链(X509_STORE),以及验证状态等。同时,它还提供了一些常用的函数接口,例如 X509_STORE_CTX_init() 用于初始化 X509_STORE_CTX 结构体;X509_verify_cert() 用于验证证书链等。
使用 X509_STORE_CTX 验证证书链时,首先需要构造一个 X509_STORE_CTX 结构体,然后调用 X509_verify_cert() 函数进行验证。在验证过程中,OpenSSL 将根据预设的策略规则对证书进行验证,并将验证结果保存在 X509_STORE_CTX 结构体中。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)