设为首页 收藏本站
查看: 1647|回复: 0

[经验分享] IBM AIX5.3 linux下C/C++实现HTTPS接口

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-9-22 08:51:40 | 显示全部楼层 |阅读模式
最近在工作中需要开发一个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发生错误的位置,把调用函数全称搜索并获取信息解决问题。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-275704-1-1.html 上篇帖子: Thinkserver RAID卡用户手册V1.2 下篇帖子: Ubuntu开启ssh服务(14.04) linux 接口
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表