这几天使用百度的人脸识别API,他们在线接口是使用HTTPS进行GET和POST,官方的C++ SDK是使用Openssl+Curl进行访问的,于是写下这篇记录一下配置过程吧!
Curl要访问HTTPS需要用到SSL支持库,目前curl提供了两种使用支持库的方式,一种是Windows自带的WinSSL,另一种是第三方SSL库OpenSSL,本次教程使用的是第三方OpenSSL库,安全性高、移植性高。OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
首先声明一下,本人使用的编程平台是VS2017,所以实际使用的是LibCurl,Curl是一个应用,是独立的。
LibCurl为一个免费开源的,客户端url传输库,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet and TFTP等协议。同curl一样,libcurl也支持SSL证书,HTTP POST, HTTP PUT,FTP上传,基于表单的HTTP上传,代理(proxies)、cookies、用户名/密码认证(Basic, Digest, NTLM等)、下载文件断点续传,上载文件断点续传(file transfer resume),http代理服务器管道(proxy tunneling)等。libcurl是高度可移植的,可以工作在不同的平台上,支持Windows,Unix,Linux等。libcurl是免费的,线程安全的,IPV6兼容的,同事它还有很多其他非常丰富的特性。libcurl已经被很多知名的大企业以及应用程序所采用。
如果是一般使用,我是不推荐自己编译的,比较麻烦,可以直接使用别人编译好的,成功性高也节约时间,如果是需要订制和裁剪的,可以看下列教程。使用最新的OpenSSL和VS2017进行编译
1.编译好的Windows OpenSSL库下载地址: https://www.npcglib.org/~stathis/blog/precompiled-openssl/
http://slproweb.com/products/Win32OpenSSL.html
Light后缀是轻量版本,不带后缀是完整版本,一般选用完整版本
2.OpenSSL1.1.1编译
需要准备的东西
1.ActivePerl:https://www.activestate.com/activeperl/downloads
①进去之后选择下面的最新版本,然后点击"Windows Installer(EXE)"下载
②安装过程就是一路Next,不过记得选择加入Path环境变量,装完之后命令提示符输入perl不会出现"'perl' 不是内部或外部命令,也不是可运行的程序或批处理文件。"代表安装成功!
2.OpenssL:https://www.openssl.org/source/
①进去之后选择最新版本,文件名是“openssl-XXXX.tar.gz”
②下载完成后解压缩备用
3.如果需要使用汇编指令,则还需下载Nasm 汇编器:https://www.nasm.us/pub/nasm/releasebuilds/?C=M;O=D
①进去之后选择最新版本,然后最底下是Win32和Win64版本按需选择。
②进去之后一路Next,装完之后记得把NASM根目录加入Path环境变量里
4.编译OpenSSL1.1.1:
①打开VS命令提示符,首先CD到刚才解压好的OpenSSL根目录
②输入:perl Configure 平台 参数 --prefix=安装绝对路径
例子:perl Configure VC-WIN64A no-asm --prefix=E:\Application\Library\openssl
这条命令用于生成configdata.pm和makefile文件
平台有: VC-WIN32、VC-WIN64A等,具体可看帮助文档
参数有:no-asm表示不使用汇编指令,其余的可看帮助文档
如果正常,应有如下画面:
当然,第一次可能会弹出白色的找不到nmake之类的,按提示下载一次即可!
③如果要改成静态库,打开configdata.pm文件,搜索“/MD”改成“/MT”就是静态编译了。
④之后开始编译,由于最新版的VC已经没有ms功能了,按照现有网络教程输入ms的就会出现找不到命令,所以直接输入nmake即可,会根据第二步生成的configdata.pm和makefile文件进行编译(这次编译还是编译到源码目录下,所以不要去第二步设置的安装目录找啦!),时间比较久,2-5分钟不等。
⑤编译完成后开始安装到第二步设置的目录里,输入nmake install安装
至此,OpenSSL编译安装完成!
这个就比较简单了
①复制刚才编译好的OpenSSL的include\openssl文件夹到curl\include下
②打开curl\projects\Windows,选择你的VC版本,然后打开lib\libcurl.sln,选择你的平台和版本,右键项目生成即可
③如果使用WindowsSSL也行,直接编译就行,比较方便但是不支持XP系统下访问HTTPS。安全性能也比OpenSSL差一些。
一路下来也碰到很多问题,不过总算搞定啦~贴一张效果图吧!