C OpenSSL-在证书链中查找错误深度
我正在编写一个C程序,用OpenSSL检索和验证x509证书链。这是我第一次用C语言编程,我在很大程度上依赖于 我可以使用以下代码从连接中检索任何错误代码:C OpenSSL-在证书链中查找错误深度,c,ssl,openssl,C,Ssl,Openssl,我正在编写一个C程序,用OpenSSL检索和验证x509证书链。这是我第一次用C语言编程,我在很大程度上依赖于 我可以使用以下代码从连接中检索任何错误代码: if (SSL_get_verify_result(ssl) != X509_V_OK) { printf("\nError verifying certificate\n"); fprintf(stderr, "Error Code: %lu\n", SSL_get_verify_result(ssl)); } 然而,我
if (SSL_get_verify_result(ssl) != X509_V_OK)
{
printf("\nError verifying certificate\n");
fprintf(stderr, "Error Code: %lu\n", SSL_get_verify_result(ssl));
}
然而,我还需要知道哪个证书是违规的。有没有像命令行s_客户端那样确定错误链深度的方法?任何示例代码都将不胜感激。我在Chandra、Messier和Viega的“OpenSSL网络安全”中找到了答案
它使用SSL_CTX_set_verify指定一个回调函数,该函数在链中每个证书的验证例程之后运行
SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, verify_callback);
int verify_callback(int ok, X509_STORE_CTX * store)
{
if (!ok) //if this particular cert had an error
{
int depth = X509_STORE_CTX_get_error_depth(store);
int err = X509_STORE_CTX_get_error(store);
}
}
我在Chandra、Messier和Viega的“OpenSSL网络安全”中找到了答案
它使用SSL_CTX_set_verify指定一个回调函数,该函数在链中每个证书的验证例程之后运行
SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, verify_callback);
int verify_callback(int ok, X509_STORE_CTX * store)
{
if (!ok) //if this particular cert had an error
{
int depth = X509_STORE_CTX_get_error_depth(store);
int err = X509_STORE_CTX_get_error(store);
}
}