- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我目前正在将一些曾经使用 RSA Security 库的现有技术重写到 OpenSSL 中,但我开始遇到一些问题。目前,所有证书验证代码似乎都在顺利运行,直到我调用 SSL_connect()。
之前,调用 SSL_connect() 会产生 SSL_ERROR_WANT_READ。
另一个论坛上对此问题的回答向我建议应该调用 SSL_connect() 直到它停止产生 SSL_ERROR_WANT_READ 错误。不幸的是,这只会产生更令人困惑的东西:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
即使 SSL_CTX_load_verify_locations() 成功。有谁知道为什么验证错误不会用证书方法注册并等到 SSL_connect() 被触发?
最佳答案
通常此错误意味着您的客户端收到的响应 SSL_connect()
的服务器证书无法验证。
这可能由于不同的原因而发生:
SSL_CONTEXT
上对其进行授权。实际上,你应该设置一个证书验证的回调,让它接受任何证书,这样你就可以专注于连接部分。一旦成功,只需调整您的回调或检查您的证书是否有效。
任何时候遇到失败,您都可以调用一些 SSL_get_error()
函数,它会告诉您证书被拒绝的原因。
(不幸的是,我现在无法访问我的代码库,所以我无法给出具体示例)
以下是我自己的 SSL 套接字包装器类中的一些代码示例,已为您改编:
// ctx is a SSL_CONTEXT
// internalCertificateVerificationCallback is a callback static method (or function)
ctx->setVerify(SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, internalCertificateVerificationCallback);
这是 internalCertificateVerificationCallback
的定义:
int SecureSocket::internalCertificateVerificationCallback(int preverify_ok, X509_STORE_CTX* x509_ctx)
{
//preverify_ok contains 1 if the pre-verification succeeded, 0 otherwise.
return 1; // This accepts every certificate
}
关于c++ - SSL_connect() 产生证书验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3298054/
我使用非阻塞套接字。对于普通的 TCP 连接,我在这里执行: Non blocking socket - how to check if a connection was successful? 但是
我正在尝试使用 SSL 创建服务器-客户端程序。我在使用 SSL_connect() 时遇到了一些麻烦:当我调用它时,它不会再返回,它只是卡在那里,客户端程序一直在运行,服务器停止等待握手完成。一旦我
我目前正在将一些曾经使用 RSA Security 库的现有技术重写到 OpenSSL 中,但我开始遇到一些问题。目前,所有证书验证代码似乎都在顺利运行,直到我调用 SSL_connect()。 之前
这两天,当我尝试安装新的 gem 时,我的控制台上收到了这个错误: Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 sta
我正在尝试通过 TLSv1.2 建立 https 连接。上下文创建和一切都很好,我没有包含在下面的代码中。 if(https) //block 1 { int ssl_err = 0;
我在使用 openssl 库时遇到问题。我在发送 EHLO 和 STARTTLS 后调用以下函数: SSL_CTX *ctx = NULL; SSL *ssl = NULL; void Cre
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and t
我有一个非阻塞套接字,我正在使用 openssl 创建一个 ssl 连接。我的问题是 SSL_connect 的工作方式。在这些情况下,它返回 SSL_ERROR_WANT_READ 或 SSL_ER
你好,我有一个使用 openssl 和 winapi 套接字的 C++ 应用程序,代码如下所示: sock = socket(AF_INET, SOCK_STREAM, 0); if (con
SSL_connect() 是否支持 ssl v3?我问这个的原因是,在访问网站时: https://secure53.onlineaccess1.com 我得到 SSL_connect(ssl) 的
我们有基于 Cucumber 的 UI 自动化测试框架。最近我们已经从 Ruby 1.9.x 迁移到 2.2.0,之后我们在通过测试框架登录我们的应用程序时遇到了问题。它说 SSL 连接重置问题。 错
我刚刚开始学习 C 的 openssl。我在弄清楚 SSL_set_connect_state 之间的区别时遇到了一些麻烦。函数和 SSL_connect功能,因为他们似乎在我的系统上做同样的事情。有
几天来,我一直在努力解决这个问题,想弄清楚它们是如何工作的。我已经阅读了文档并查看了一些示例,但我仍然需要指导。 具体来说,当客户端调用 connect() 并成功连接到服务器主机时,我是否应该在它之
使用我的 SSLCLIENT 的 openssl SSLConnect 出现奇怪的连接失败。 我们正在尝试与服务器建立 ssl 连接。我们注意到 SSL_CONNECT 失败,错误代码为“SSL_ER
当用 openssl 编写的服务器不调用 SSL_accept 时,客户端的 SSL_connect 将永远阻塞。openssl -SSL_CTX_set_timeout 、 SSL_SESSION_
SSL_CTX_set_verify() 和 SSL_set_verify() 调用可用于为底层上下文和 ssl 设置 verify_callback() 函数,分别。以下是 verify_callb
以下代码将始终以 # 结尾错误信息。 它可能会在 5 秒后或 30 分钟后失败。 require 'net/https' http = Net::HTTP.new('newproduct.zendes
我有以下 Controller - courses-controller.rb: class CoursesController Searching for - Imag
我有以下代码,并且我收到了 SIGSEGV: if ( SSL_connect(ssl) == FAIL ) 我遇到的错误是: Program received signal SIGSEGV, Seg
我想在我的 C++ 服务器和客户端中使用 thrift 提供的 ssl 支持。我自己的 Thrift 客户端在通过“transport->open()”后总是卡在 SSL_connect 中.所以我建
我是一名优秀的程序员,十分优秀!