Libmicrohttpd和ssl

时间:2016-10-08 04:09:01

标签: c ssl https server gnu

我正在关注本教程:https://www.gnu.org/software/libmicrohttpd/tutorial.html#Adding-a-layer-of-security

在关于ssl的部分中,提供了一个名为tlsauthentication.c的示例...这里是一个包含源代码的链接......

https://github.com/ulion/libmicrohttpd/blob/master/doc/examples/tlsauthentication.c

不幸的是我无法运行此文件。守护进程永远不会启动。相反,它立即返回null。 (这发生在靠近源底部的int main()方式。)

所需的文件是server.key和server.pem,我根据教程的说明在正确的位置创建了它。

我发现了一个类似的问题,答案是OP使用--no-https标志(或类似的东西)编译,但我只是在默认设置下编译(./configure& make& make install我认为是)

我错过了什么?如何让这个文件按预期提供https?

如果它是相关的,我使用最新的稳定版本的libmicrohttpd,我更新了gnutls(如果重要的话),我在OSX El Capitan。

1 个答案:

答案 0 :(得分:0)

如果您是Windows用户,并且想将libmicrohttpd与SSL一起使用,则必须执行以下步骤:

  1. 在w32 \ common \ MHD_config.h中的MHD_config.h中添加“ #define HTTPS_SUPPORT 1”
  2. 下载libgnutls(MinGW编译版本)
  3. 通过从Visual Studio中执行lib.exe(打开cmd.exe,浏览到libgnutls的lib目录中,然后按以下方式执行lib.exe)来生成libgnutls的LIB文件:“ C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ bin \ lib.exe“ /def:libgnutls-30.def / nologo / machine:x64)
  4. 将libgnutls的“ include”目录复制到libmicrohttpd Visual Studio项目文件下,并将其命名为“ gnutls”
  5. 将生成的libgnutls-30.lib,libgnutls-30.exp以及libgnutls-30.def复制到带有libmicrohttpd Visual Studio项目文件的文件夹中。
  6. 使用配置Debug-dll或Release-dll之一编译libmicrohttpd。带有-static的用户可能不再使用,因为这会违反LGPL2.1许可证(使用SSL时会使用该许可证)。
  7. 将您的应用程序与生成的lib(即libmicrohttpd-dll.lib)链接,并将libmicrohttpd-dll.dll以及所有libgnutls DLL(libgnutls-30.dll,...)复制到exe文件。