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



我正在尝试开发一个仅限客户端的最小SSL/TLS应用程序,以连接到https服务器。它总是在'SSL_connect((上失败。我还没有安装任何证书
在这种情况下需要证明吗
我在SO和其他地方发现了许多答案,这些答案都说"不",并带有警告"除非服务器要求">

详细信息:

  • 我使用的是从源代码构建的GitHub:OpenSSL包
  • connect之前的所有SSL调用都成功
  • 在调试时,我看到函数"SSL_do_handshake"[返回-1]中出现错误
  • 我尝试了几个不同的https服务器,结果都是一样的
  • 我在Dell Optiplex Win10/64机器上使用MSVC 2019
  • 理想情况下,我希望避免证书,以避免(不懂技术的(最终用户不得不篡改证书

代码简介:

  • 获取方法:TLS_client_method((
  • 获取CTX:SSL_CTX_new(方法(
  • 创建套接字"sock">
  • 将sock连接到端口443上的主机
  • 创建SSL*:SSL=SSL_new(ctx(
  • SSL_set_fd(SSL、sock(
  • SSL_connect(SSL([总是失败]

"无Applink";解释了失败——尽管它导致ERR_print_errors_fp也失败。

在Windows上,要将打开的文件或套接字从exe传递到OpenSSL库,如果链接为DLL(这是默认的,但可重写(,则必须编译并链接到应用程序exe中,提供的文件包括/OpenSSL/applink.c(注意.c不是.h--它是include文件,而不是

header在MSVC上,我认为你只需将此文件或副本"添加"到你的项目中,它就会自动编译和链接,但我自己不再使用它,也无法验证。您可能需要#将文件包括在适当的位置,如您的main.c.

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

最新更新