关于 c:OpenSSL – 在证书链中查找错误深度
OpenSSL - find error depth in certificate chain
我正在编写一个 C 程序来使用 OpenSSL 检索和验证 x509 证书链。这是我第一次用 C 编程,我非常依赖 http://www.ibm.com/developerworks/linux/library/l-openssl/
上的教程
我可以使用以下代码从连接中检索任何错误代码:
|
1
2 3 4 5 6 7 8 |
if (SSL_get_verify_result(ssl) != X509_V_OK)
{ printf(" Error verifying certificate "); fprintf(stderr,"Error Code: %lu ", SSL_get_verify_result(ssl)); } |
但是我还需要知道哪个证书是违规的。有没有办法像命令行 s_client 那样确定错误的链深度?任何示例代码将不胜感激。
我在 Chandra、Messier 和 Viega 的"使用 OpenSSL 的网络安全"中找到了答案。
它使用 SSL_CTX_set_verify 指定一个回调函数,该函数在链中每个证书的验证例程之后运行。
|
1
2 3 4 5 6 7 8 9 10 11 |
SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, verify_callback);
int verify_callback(int ok, X509_STORE_CTX * store) |