首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用SSL_connect时发生SSL_ERROR__SSL

调用SSL_connect时发生SSL_ERROR__SSL
EN

Stack Overflow用户
提问于 2012-09-06 16:13:29
回答 2查看 2.9K关注 0票数 0

我用openssl编写代码来连接tls下的服务器。如果我从pem文件加载证书,它可以正常工作。但是如果我从pfx文件加载证书,它在调用SSL_connect时发生SSL_ERROR_SSL。我不知道加载pfx文件的过程是否错误。流程如下所示。

代码语言:javascript
复制
FILE* fp = fopen("cert.pfx", "rb");
PKCS12* p12 = d2i_PKCS12_fp(fp, NULL);
PKCS12_parse(p12, NULL, &private_key, &certificate, &ca_certificates);
SSL_CTX_use_certificate(ctx, certificate);
SSL_CTX_use_PrivateKey(ctx, private_key);
SSL_CTX_check_private_key(ctx);
SSL_CTX_add_extra_chain_cert(ctx, sk_X509_value(ca_certificates, i);
SSL_CTX_add_client_CA(ctx, sk_X509_value(ca_certificates, i);
SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, NULL);
SSL_CTX_set_mode(ctx, SSL_MODE_AUTO_RETRY);
...
SSL* ssl = SSL_new(ssl_context);
SSL_set_fd(ssl, sockfd);
SSL_connect(ssl);
...

我已经与其他客户测试了pfx文件。它工作得很好。所以问题不在于pfx文件。是否有任何openssl选项会导致连接失败?或者我没有正确设置CA证书?pfx文件包含我自己签名的CA。但它可以与其他客户端一起工作。

我在SSL_connect()失败后调用了ERR_get_error()。并获得证书验证失败。所以我认为在上面加载pfx文件的过程中有一些错误。也许我没有正确添加CA证书。谁能告诉我加载pfx的正确进程。

请帮帮我!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-06 22:01:50

你的i变量是sk_num(ca_certificates)大小的计数器吗?如果是,试着删除我认为不适合客户端的行SSL_CTX_add_client_CA (不确定,很难)。

另外,在您的错误处理中,放入以下几行以找出原因:

代码语言:javascript
复制
SSL_load_error_strings(); // just once
char msg[1024];
ERR_error_string_n(ERR_get_error(), err_msg, sizeof(err_msg));
printf("%s\n", msg);`

或者,您也可以尝试直接获取SSL错误:

代码语言:javascript
复制
int ssl_error = SSL_get_verify_result(ssl);

可以在此page中检查生成的int

票数 0
EN

Stack Overflow用户

发布于 2012-12-21 19:41:00

我发现,使用SSL_CTX_add_extra_chain_cert添加证书的顺序确实很重要。PKCS12_parse添加证书的顺序必须从libssl0.9.8更改为libssl1.0。这就是为什么我使用下面的代码将它们添加到cert-store。

代码语言:javascript
复制
X509_STORE * certStore = SSL_CTX_get_cert_store(ctx);
for(int i = 0; i < sk_X509_num(ca) ; i++)
{
    if (X509_STORE_add_cert(certStore, sk_X509_value(ca_certificates, i))==0)
    {
        ERR_print_errors_fp (stderr);
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12295722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档