IBM AIX5.3 linux下C/C++实现HTTPS接口
最近在工作中需要开发一个Https接口,其不同于http、soap等协议,可以直接组织报文并发送,不存在加密,认证和获取密钥等安全操作。且之前开发的项目没有开发过这类接口,所以当时压力很大。
通过网上查阅资料,要实现https接口,必须现在本机上安装openssl和curl(说明:只用opessl也可以实现https,目前我是使用openssl和curl)。
在安装openssl和curl过程中吃了不少苦头,因为服务器是IBM AIX5.3,服务器很久没升级打补丁很多软件安装都不能顺利进行,可以说是高不成低不就。尝试很多发布版本的安装,结果都不尽人意,在快要绝望时,在http://blog.sina.com.cn/s/blog_541a3cf101017869.html网站上看到了希望,在IBM AIX5.3下安装OpenSSL 0.9.8m可以成功,之前安装的是OpenSSL 0.9.8a失败(报Trace/BPT trap(coredump)错误)。
下面说明下openssl和curl的安装步骤说明:
openssl安装步骤
gunzip opensll-0.9.8m.tar.gz
tar xvfopensll-0.9.8m.tar
./config --prefix=自定义安装路径
make
make install
curl安装步骤
gunzip curl-7.24.0.tar.gz
tar xvf curl-7.24.0.tar
./configure --with-ssl=openssl的安装路径 --prefix=自定义curl安装路径
make
make install
一下给出https客户端接口代码:
long CHomeAnFangIt::Post(const std::string& url,const std::string& putObject, std::string& rsp)
{
CURL* curl=curl_easy_init();
if(!curl)
{
logger->info("Init curl error.");
return -1;
}
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 120);
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
curl_easy_setopt(curl, CURLOPT_POST, true); // POST
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,s_UrlWrite);
curl_easy_setopt( curl , CURLOPT_POSTFIELDS, putObject.c_str());
curl_easy_setopt( curl , CURLOPT_POSTFIELDSIZE, putObject.size());
curl_easy_setopt(curl,CURLOPT_WRITEDATA,&rsp);
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
curl_easy_setopt(curl, CURLOPT_USE_SSL, 1);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0);
CURLcode c=curl_easy_perform(curl);
if(c!=CURLE_OK)
{
logger->info("curl_easy_perform error,err=%d",c);
curl_easy_cleanup(curl);
return -1;
}
long rsp_code=0;
curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE,&rsp_code);
curl_easy_cleanup(curl);
return rsp_code;
}
总结:
对新知识的上手速度不够,当遇到一个难题陷入瓶颈时,想到的是退缩,认为此问题无法解决。这样的思维是不好的。要利用目前所有信息,不断的搜索查询,总会有奇迹出现,胜利总会眷顾永不放弃的人。
当一个程序dump掉后,会在当前目录下生成core文件,我们可以使用gdb单步调式查看core发生错误的位置,把调用函数全称搜索并获取信息解决问题。
转载于:https://blog.51cto.com/luoshibin123/1434103
IBM AIX5.3 linux下C/C++实现HTTPS接口相关推荐
- crt证书linux使用,linux下使用openssl生成https的crt和key证书
x509证书一般会用到三类文,key,csr,crt Key 是私用密钥openssl格,通常是rsa算法. Csr 是证书请求文件,用于申请证书.在制作csr文件的时,必须使用自己的私钥来签署申,还 ...
- linux下使用ab压测接口性能方法
ab -r -k -n 100000 -c 500 www.baidu.com/login -r 表示遇到错误继续 -k 表示keepalive -n表示总共请求的次数 -c表示每次请求的数量(即并发 ...
- linux下MQTT介绍和开发
一.简述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级 ...
- SIPp工具Linux下安装
2019独角兽企业重金招聘Python工程师标准>>> 一.SIPp介绍 SIPp是一个测试SIP协议性能的工具软件,这是一个开源软件. 它可使用INVITE和B YE建立 ...
- 「SVN」Linux下svn使用命令
原文链接:https://blog.csdn.net/return9/article/details/89042359 Window下SVN安装以及使用 TortoiseSVN下载:https://w ...
- linux下read函数缺失字节_机器人、工控机和Linux 网络编程接口能否蹭出火花?
今日份干货分享 随着全国大学生机器人大赛的不断发展,机器人的控制器也由以单片机为主的控制器逐渐转向以工控机为主的控制器,工控机上可以跑操作系统,系统的实时性以及对大数据的处理性也十分不错.以后机器人的 ...
- linux spf13 vim安装,Linux 下安装 spf13-VIM
Linux 下安装 spf13-VIM 前言 https://github.com/spf13/spf13-vim 是一个集成多个非常好用的 VIM 插件的集合, 对于在众多插件中不知道该怎么做选择, ...
- linux下rust编译环境搭建
使用 Rustup Rustup 是官方提供的安装工具,不仅可以下载 Rustc 编译工具,还可以下载各种 Rust 的工具链. Rustup 镜像/反代 使用方式 把一下代码复制到.bashrc或者 ...
- Linux下安装VSCA
VMware vCenter 安装部署手册 vCenter Server Appliance,缩写VCSA,是一台预装了 Linux 的虚拟机.它可以通过 web 批量管理 ESXI 主机,并且进行各 ...
- Linux 下固态硬盘恢复误删除文件
首发地址:学习日记 Linux 下固态硬盘恢复误删除文件 – 学习日记 上次分享了一则Linux下恢复误删除文件的视频,有朋友在视频下方询问是否机械硬盘,由此引出今天这则Linux下固态硬盘恢复误删除 ...
最新文章
- 【OpenCV 4开发详解】图像与视频的保存
- Mysql Explain 详解
- 一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx、supervisor、mysql环境搭建...
- 12. 定义类 【连载 12】
- Gradle 之 Android 中的应用
- 用matlab绘制一个时钟
- 【算法入门】用Python手写五大经典排序算法,看完这篇终于懂了!
- 大剑无锋之你了解HTTPS吗?那么它为什么安全?【面试推荐】
- 烂泥:智能DNS使用与配置
- Html.RenderPartial和Html.Partial在Razor视图中的区别
- ZooKeeper 3.0.0发行说明
- hibernate的数据关联映射
- bzoj2286 消耗战 虚树树形dp
- java 调用 pb dll_[转载]一个java调用delphi写的dll问题,郁闷了一天一晚解决
- Android之使用通知栏通知的三种方法(短内容、长内容、图片通知)
- 【Java的Excel操作】MyExcel
- MySQL查询不同年份母亲节_日期习俗大不同,走近七个国家的母亲节!
- 感人!华为员工累死,同事模仿鲁迅写《纪念胡新宇君》(转贴)
- Flask 学习-22.可插拨视图MethodView类
- 蚂蚁算法python_蚁群算法python编程实现
热门文章
- Padavan 路由器系统如何放开wan口的samba访问
- 基于ASP.NETAJAX的WebPart开发与部署-转
- 【Flutter】IOS打包
- QThread的用法:开启与退出
- VC.【转】窗口置于前台并激活的方法
- ArrayList与Vector的区别
- ACE6.3.3在Linux(CentOS7.0)下的安装和使用
- 最近学到一些linq和面向对象的经验分享
- Elasticsearch从0.90(0.90.x)到1.2(1.x)API的变化-二
- 新浪网产品设计指南(含UI规范)