openssl1.0.1中没有SSL_CTX_set1_sigalgs_list(ctx, "RSA+SHA256"),如何实现
时间: 2024-02-09 17:09:27 浏览: 59
cli.rar_Openssl socket_openssl ssl_socket ssl_ssl
如果你使用的是 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 函数。
阅读全文