在window平台下,自己DIY编译OpenSSL,Libcurl ,来支持HTTPS传输协议

在window平台下,自己DIY编译OpenSSL,Libcurl ,来支持HTTPS传输协议

前言:

    libcur如果是你用cmakeGui工具,进行编译的化,是可以在没有openssl的情况下编译成功的。但是不支持https,当你使用https的接口API时,libcur库返回的错误是不支持此协议。

     因为我是用VS2012的IDE进行编译的。下面都是转载的其他博主的文章。其实我主要卡在的地方就是不知道怎么把openssl的支持放进去。看博主的文章是只要执行下面一句化即可

nmake /f Makefile.vc mode=dll VC=10 WITH_DEVEL=C:\openssl_lib WITH_SSL=static ENABLE_SSPI=no ENABLE_IPV6=no

1 缘起

  原来就了解些libcurl,一直没有机会在项目实际使用libcurl.
   恰好最近一个云存储的项目,服务器使用openstack 恰好我负责现在的一个云存储SDK c++版本的开发中。 与服务器的通信都是基于HTTP/HTTPS协议通信。先做window下的sdk,在逐步移植到linux和MAC平台下。

  在curl的官方网站 **http://curl.haxx.se/download.html** 提供编译好libcurl包,用于老外的使用的 VC++编译器过高,本人使用VC2010,所以不兼容,所以参照网上的文章,一步一步搭建起基于OpenSSL和OpenSSH的的libcurl,能 够支持Https协议。

   最后写一个demod工程,演示下libcurl强大的威力和自己使用libcurl的一些心得。

2 curl/libcurl 介绍

     先看的baidu 百科是怎么介绍curl

它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。

curl同样支持HTTPS认证,HTTP POST方法, HTTP PUT方法, FTP上传, kerberos认证,HTTP上传,代理服务器, cookies, 用户名/密码认证, 下载文件断点续传,上载文件断点续传,http代理服务器管道( proxy tunneling), 甚至它还支持IPv6, socks5代理服务器,通过http代理服务器上传文件到FTP服务器等等,功能十分强大。

Windows操作系统下的网络蚂蚁网际快车(FlashGet)的功能它都可以做到。准确的说,curl支持文件的上传和下载,所以是一个综合传输工具,但是按照传统,用户习惯称curl为下载工具。          

     

     libcurl就是curl的库,其中在C++/C 在程序涉及到url协议通迅的时候,libcurl是首选。现在流行的网盘客户端(百度的,360的),在与服务器回话的,都是使用libcurl作为底层库

         

3 安装OpenSsl开发包

     libcurl主要通过SSL(Secure Sockets Layer 安全套接层)和TLS(Transport Layer Security 传输层安全),在传输层对网络连接进行加密。

     本文使用OpenSSL使用作为开发库。 也可以使用GnuTLS来支持TLS/SSL协议

  

     libcurl要支持ssh协议可以通过libssh2库进行支持。

     

     下载OpenSsl的包  本文使用 ftp://ftp.openssl.org/snapshot/openssl-1.0.2-stable-SNAP-20140704.tar.gz

     用解压工具解压包解压到硬盘上,方便可以解压大C:\openssl-1.0.2-stable-SNAP-20140704

     解压工具haozip (2345好压免费压缩软件—高效专业,值得信赖(二三四五旗下))

4  安装perl程序

    openssl编译 Configure的时候,使用到perl程序,在window 下比较流行当仁不让就是 activeperl

  http://dl.softmgr.qq.com/original/Development/ActivePerl-5.16.3.1604-MSWin32-x64-298023.msi

    安装比较简单,默认安装就可以了 ,来几张截图

   

5  安装NASM 汇编器

  

   编译可以使用vc++编译器来编译OpenSSL,使用汇编器编译有更快的速度,本人使用汇编器是nasm
    http://www.nasm.us/pub/nasm/releasebuilds/2.11.05/win32/nasm-2.11.05-installer.exe 

   安装过程如下图所示

  

  

6  使用汇编器NASM编译OpenSSL库
   

   本人安装是VS2010开发环境, OpenSSL需要使用Visual Studio 命令行方式编译。

      1) 点击 开始->所有程序->Microsoft Visual Studio 2010->Visual Studio Tools->Visual Studio 命令提示(2010)

      2)再打开编译窗口将上面安装NASM的路径添加到PATH环境变量里  PATH=%PATH%;"c:\Program Files (x86)\nasm"
      3)进入OpenSSL的工作目录 C:\openssl-1.0.2-stable-SNAP-20140704

      4)  新建一个编译好的程序的输出目录 mkdir C:\openssl_lib

      


  

       5) 配置OpenSSL的安装目录 perl Configure VC-WIN32  --prefix=c:/openssl_lib

          输出结果如下

         

        6) 生存Makefile 文件 ms\do_nasm

         如果不是使用nasm汇编器,这一步使用其他的命令代代替(如ms\do_ms)

         输出如下

         

         7)开始编译如果要编译成动态库使用  nmake -f ms\ntdll.mak

              如果要编译成静态库使用nmake -f ms\nt.mak

              本次编译成静态链接库,所以使用nmake -f ms\nt.mak

              需要等待一段时间。  可以运动下。

        8) 安装到配置目录

             所以使用nmake -f ms\nt.mak install 

             前面第5步 已经设置好了安装目录 c:/openssl_lib ,现在去里面看看 是什么

            

 7 编译curl/libcurl

      将下载curl-7.37.0.tar的包,解压到一个文件目录,本例解压到E:\curl-7.37.0\

   进入winbuild目录,通过 nmake /f Makefile.vc 查看下帮助

      

      执行 nmake /f Makefile.vc mode=dll VC=10 WITH_DEVEL=C:\openssl_lib WITH_SSL=static ENABLE_SSPI=no ENABLE_IPV6=no

      

     命令注释 mode=dll 编译libcurl位动态链接库,如果static 就是把libcurl编译位静态库 

     VC=10 代表使用的是VC2010

     WITH_DEVEL=C:\openssl_lib 表示用到第三方开发包的目录,本例上面已经将openssl编译好的开发包,安装到此目录

     WITH_SSL=static ,代表使用libssl库 是静态库

     ENABLE_SSPI=no ENABLE_IPV6=no(禁用SSPI,ipV6功能)

     稍等片刻就编译成功了。

8  测试 编译后的libcurl是否支持HTTPS协议 ?

       在第7步,编译成功以后,会生成libcurl 还有外壳程序curl .

       安装上面的配置,找到curl和libcurl

      

       

        下面测试 www.baidu.com 和支持加密 https://mail.qq.com

        

       

         经过测试访问加密HTTPS协议传输,和不用加密的HTTP都能成功。。  所以编译libcurl 就算圆满成功 大功告成!!!

   

      9 总结:

       libcurl可以通过openssl作为底层库,来支持HTTPS协议,比较麻烦就是编译openssl

       本文使用nasm+acitiveperl的工具去编译openssl,一般都很顺利,。

       通过仔细阅读libcurl的makefile,还是很容易配置编译libcurl.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要使libcurl支持openssl,需要进行以下步骤: 1. 确保系统已经安装了openssl库和开发包。可以使用包管理器来安装这些依赖项(例如apt-get、yum等)。 2. 下载libcurl的源代码,并解压缩。 3. 进入解压后的libcurl源代码目录,打开命令行终端。 4. 运行以下命令来配置编译选项: ```shell ./configure --with-ssl ``` 该命令会自动检测系统上已安装的openssl版本,并将其与libcurl进行链接。 5. 运行以下命令进行编译: ```shell make ``` 这将编译libcurl库,并生成可执行文件。 6. 最后,运行以下命令来安装libcurl: ```shell sudo make install ``` 这将把编译好的libcurl库文件复制到系统的标准库目录中,以便其他程序可以使用。 完成以上步骤后,libcurl就已经成功编译支持openssl了。我们可以在新的程序中使用libcurl进行https请求,而不需要额外的配置。 ### 回答2: libcurl是一个强大且广泛使用的开源网络传输库,可以用来进行HTTP、FTP、SMTP等网络协议的数据传输。为了支持使用OpenSSL进行安全的数据传输,需要在编译libcurl时进行相应的配置。 首先,需要安装OpenSSL库。可以从OpenSSL官方网站下载最新的源代码,并按照其提供的指导进行安装。 接下来,在编译libcurl之前,需要确保系统已经安装了OpenSSL的开发库。这些库通常包含在类似libssl-dev或openssl-devel的软件包中。可以使用系统的包管理工具进行安装。 在编译libcurl时,需要指定使用OpenSSL的选项。在配置libcurl时,可以使用以下命令: ./configure --with-ssl 这样会告诉编译系统使用OpenSSL进行编译,并在编译过程中链接OpenSSL的库文件。 在配置完成后,可以使用make命令进行编译,并使用make install命令进行安装。 安装完成后,可以在编写代码时使用libcurl库进行网络传输的开发。在代码中,可以通过设置相应的选项来使用OpenSSL进行安全传输。例如,可以通过设置CURLOPT_SSL_VERIFYPEER选项为1来验证服务器的证书,通过设置CURLOPT_SSL_VERIFYHOST选项为2来验证服务器的主机名。 总之,编译libcurl支持OpenSSL需要先安装OpenSSL库和开发库,然后在配置和编译libcurl时指定使用OpenSSL的选项。在代码中,可以通过设置相应的选项来进行安全传输的设置。 ### 回答3: 要编译libcurl支持OpenSSL,您需要按照以下步骤操作: 1. 首先,确保您的系统已经安装了OpenSSL。您可以在终端中运行以下命令来检查: ``` openssl version ``` 如果OpenSSL已经安装,您将看到OpenSSL的版本信息。 2. 下载libcurl源代码。您可以从libcurl官方网站(https://curl.se/download.html)或GitHub仓库(https://github.com/curl/curl)下载最新版本的libcurl。 3. 解压源代码文件,并进入解压后的目录。 4. 在终端中运行以下命令来配置编译选项: ``` ./configure --with-ssl ``` 这将配置libcurl以启用OpenSSL支持。 5. 运行以下命令编译libcurl: ``` make ``` 这将编译libcurl,生成可执行文件。 6. 最后,在终端中运行以下命令安装libcurl: ``` make install ``` 这将安装libcurl到系统中。 完成以上步骤后,您已成功编译支持OpenSSLlibcurl。您可以在项目中使用libcurl来进行网络通信,并使用OpenSSL进行安全通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值