仅客户端 SSL/TLS 应用程序是否需要证书?

Are certificates required for client-only SSL/TLS apps?

我正在尝试开发一个最小的 客户端 SSL/TLS 应用程序来连接到 https 服务器。它总是在 'SSL_connect() 上失败。我还没有安装任何证书。
这种情况需要证书吗?
我在 SO 和其他地方找到了很多答案,这些答案在警告 “除非服务器要求”.

详情:

代码概要:

“没有应用程序link”解释了失败的原因——尽管它导致 ERR_print_errors_fp 也失败了。

On Windows 将打开的文件或套接字从您的 exe 传递到 OpenSSL 库 if linked 作为 DLL(这是默认设置,但是可覆盖)你必须 编译并 link 将提供的文件 include/openssl/applink.c 编译到你的应用程序 exe 中(注意 .c 不是 .h -- 它是一个 include 文件而不是 header 文件)。请参阅 https://www.openssl.org/docs/man1.1.1/man3/OPENSSL_Applink.html(虽然它很简短;我确信我在几十年前的某个地方看到过更好的解释,但我现在找不到了)。

在 MSVC 上,我 认为 你可以 'add' 这个文件,或者一个副本,到你的项目,它会自动编译和 linked ,但我自己不再使用它,无法验证。您可能 需要在适当的地方#include 文件,例如您的main.c .

好吧,简单回答我的问题。原来我测试的服务器有问题。当我尝试连接到另一个端口时,例如端口 443 上的“feistyduck.com”或“google.com”,一切都很好。