【问题标题】:Verify a certificate chain in STACK_OF(X509)验证 STACK_OF(X509) 中的证书链
【发布时间】:2013-01-28 18:03:10
【问题描述】:

所以我有一个证书链存储在 STACK_OF(X509) 中。 这就是我用它做的:

STACK_OF(X509) *chain = SSL_get_peer_cert_chain(ssl);

X509_STORE_CTX* newCert = X509_STORE_CTX_new();
if(newCert){
    X509_STORE_CTX_set_chain(newCert, chain);
    std::cout << X509_verify_cert(newCert) << std::endl;
}
std::cout << "ERROR : " << X509_STORE_CTX_get_error(newCert) << std::endl;

问题是 X509_verify_cert(newCert) 返回 -1 意味着 X509_STORE_CTX 的初始化没有正确关闭。我错过了什么?

【问题讨论】:

    标签: c++ openssl x509certificate x509


    【解决方案1】:

    我猜,这和Use of STACK_OF(X509)有关。

    您不应该只复制apps/verify.c 的一半源代码。如果你看得更深,你会发现,除其他外,

     286         if(!X509_STORE_CTX_init(csc,ctx,x,uchain))
    

    【讨论】:

    • X509_STORE store 是做什么的?如何初始化?如果我有一个链条,我真的应该使用第三个参数,一个 X509?
    • 我需要将ssl/certs中的所有证书初始化成一个x509_store,然后用它来验证stack_of(x509)中的证书?
    • @PrasanthMadhavan 我对 openssl 不太熟悉,但快速浏览一下check 的调用者会导致X509_STORE_new 和stackoverflow.com/q/6646841/1741542 和stackoverflow.com/q/2756553/1741542。我认为这不是一项微不足道的任务。您需要使用 verify.c 源进行搜索和试验。
    猜你喜欢
    • 2012-04-05
    • 1970-01-01
    • 2012-09-28
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 2011-11-11
    • 1970-01-01
    相关资源
    最近更新 更多