如何从SSL_CTX获取证书?

如何从SSL_CTX获取证书?,ssl,x509,Ssl,X509,我使用SSL\u-CTX\u-use\u-certificate(SSL\u-CTX*CTX,X509*x)将证书存储到SSL\u-CTX*CTX 它存储在SSL\u CTX对象的CTX->cert->key->x509 是否有任何API可从SSL\u CTX获取?X509*SSL\u get\u peer\u证书(const SSL*SSL)SSL\u get\u peer\u certificate()返回指向对等方提供的X509证书的指针 X509*SSL\u-get\u证书(const-

我使用
SSL\u-CTX\u-use\u-certificate(SSL\u-CTX*CTX,X509*x)
将证书存储到
SSL\u-CTX*CTX

它存储在
SSL\u CTX
对象的
CTX->cert->key->x509


是否有任何API可从
SSL\u CTX
获取?

X509*SSL\u get\u peer\u证书(const SSL*SSL)
SSL\u get\u peer\u certificate()返回指向对等方提供的X509证书的指针

X509*SSL\u-get\u证书(const-SSL*SSL)函数返回一个X.509类型指针,指向SSL结构中加载的证书

上面的定义和你在回答中提到的一样简单

X509 *SSL_get_certificate(const SSL *s)
{
    if (s->cert != NULL)
        return(s->cert->key->x509);
    else
        return(NULL);
}
下面是更多信息的参考链接

老问题,但请发到这里作为参考,因为我花了几个小时来解决这个问题

以下是从SSL_CTX*获取证书并检查证书剩余有效天数(和秒数)的示例:

X509 *x509 = SSL_CTX_get0_certificate(ssl_ctx);
const ASN1_TIME* notAfter = X509_getm_notAfter(x509);
int remaining_days=0, remaining_seconds = 0;
int  result = ASN1_TIME_diff(&remaining_days, &remaining_seconds, NULL, notAfter);
std::cout << "remaining days: " << remaining_days << std::endl;
std::cout << "remaining seconds: " << remaining_seconds << std::endl;
X509*X509=SSL\u CTX\u get0\u证书(SSL\u CTX);
常数ASN1_TIME*notAfter=X509_getm_notAfter(X509);
整数剩余天数=0,剩余秒数=0;
int result=ASN1_TIME_diff(剩余天数和剩余秒数,NULL,notAfter);

std::不能,但我正在使用上下文级别。。。这是你给我的联系对象这不是小事吗?您有
SSL\u ctx
对象和
x509*
证书所在的索引,为什么需要API<另一方面,code>SSL
session对象可以从
SSL\u ctx
对象获取证书