



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、使用 OPENSS 编写服务器和客户端代码实例使用相同的 ca 生成两个证书,一个是 server.cer,一个是 client.cer,注意生成 server.cer候必须指明证书可以用于服务端的。服务器代码:1.#includeopenssl/bio.h2.#includeopenssl/ssl.h3.#includeopenssl/err.h4.5.#include6.7.#defineEXIT_IF_TRUE(x)if(x)8.do9.fprintf(stderr,Check%sistruen,#x);10.ERR_print_errors_fp(stderr);11.exit(2);
2、12.while(0)13.14.intmain(intargc,char*argv)15.16.SSL_CTX*ctx;17.SSL*ssl;18.X509*client_cert;19.20.charszBuffer1024;21.intnLen;22.23.structsockaddr_inaddr;24.intlen;25.intnListenFd,nAcceptFd;26.27./初始化28.cutil_init();29.cutil_log_set_level(LOG_ALL);30.cutil_log_set_stderr(1);31.SSLeay_add_ssl_algorit
3、hms();的时32.OpenSSL_add_all_algorithms();33.SSL_load_error_strings();34.ERR_load_BIO_strings();35.36./我们使用 SSLV3,V237.EXIT_IF_TRUE(ctx=SSL_CTX_new(SSLv23_method()=NULL);38.39./要求校验对方证书40.SSL_CTX_set_verify(ctx,SSL_VERIFY_PEER,NULL);41.42./加载 CA 的证书43.EXIT_IF_TRUE(!SSL_CTX_load_verify_locations(ctx,ca
4、cert.cer,NULL);44.45./加载自己的证书46.EXIT_IF_TRUE(SSL_CTX_use_certificate_file(ctx,server.cer,SSL_FILETYPE_PEM)=0);47.48./加载自己的私钥49.EXIT_IF_TRUE(SSL_CTX_use_PrivateKey_file(ctx,server.key,SSL_FILETYPE_PEM)=0);50.51./判定私钥是否正确52.EXIT_IF_TRUE(!SSL_CTX_check_private_key(ctx);53.54./创建并等待连接55.nListenFd=cutil_
5、socket_new(SOCK_STREAM);56.cutil_socket_bind(nListenFd,NULL,8812,1);57.58.memset(&addr,0,sizeof(addr);59.len=sizeof(addr);60.nAcceptFd=accept(nListenFd,(structsockaddr*)&addr,(size_t*)&len);61.cutil_log_debug(Acceptaconnectfrom%s:%dn,62.inet_ntoa(addr.sin_addr),ntohs(addr.sin_port);63.64
6、./将连接付给 SSL65.EXIT_IF_TRUE(ssl=SSL_new(ctx)=NULL);66.SSL_set_fd(ssl,nAcceptFd);67.EXIT_IF_TRUE(SSL_accept(ssl)!=1);68.69./进行操作70.memset(szBuffer,0,sizeof(szBuffer);71.nLen=SSL_read(ssl,szBuffer,sizeof(szBuffer);72.fprintf(stderr,GetLen%d%sokn,nLen,szBuffer);73.strcat(szBuffer,thisisfromserver);74.SS
7、L_write(ssl,szBuffer,strlen(szBuffer);75.76./释放资源77.SSL_free(ssl);78.SSL_CTX_free(ctx);79.close(nAcceptFd);80.客户端代码1.#includeopenssl/bio.h2.#includeopenssl/ssl.h3.#includeopenssl/err.h4.5.#include6.7.#defineEXIT_IF_TRUE(x)if(x)8.do9.fprintf(stderr,Check%sistruen,#x);10.ERR_print_errors_fp(stderr);11
8、.exit(2);12.while(0)13.14.intmain(intargc,char*argv)15.16.SSL_METHOD*meth;17.SSL_CTX*ctx;18.SSL*ssl;19.20.intnFd;21.intnLen;22.charszBuffer1024;23.24./初始化25.cutil_init();26.cutil_log_set_level(LOG_ALL);27.cutil_log_set_stderr(1);28.SSLeay_add_ssl_algorithms();29.OpenSSL_add_all_algorithms();30.SSL_l
9、oad_error_strings();31.ERR_load_BIO_strings();32.33./我们使用 SSLV3,V234.EXIT_IF_TRUE(ctx=SSL_CTX_new(SSLv23_method()=NULL);35.36./要求校验对方证书37.SSL_CTX_set_verify(ctx,SSL_VERIFY_PEER,NULL);38.39./加载 CA 的证书40.EXIT_IF_TRUE(!SSL_CTX_load_verify_locations(ctx,cacert.cer,NULL);41.42./加载自己的证书43.EXIT_IF_TRUE(SSL
10、_CTX_use_certificate_file(ctx,client.cer,SSL_FILETYPE_PEM)=0);44.45./加载自己的私钥46.EXIT_IF_TRUE(SSL_CTX_use_PrivateKey_file(ctx,client.key,SSL_FILETYPE_PEM)=0);47.48./判定私钥是否正确49.EXIT_IF_TRUE(!SSL_CTX_check_private_key(ctx);50.51./创建连接52.nFd=cutil_socket_new(SOCK_STREAM);53.if(cutil_socket_connect(nFd,,8812,30)0)54.55.cutil_log_error(连接服务器失败n);56.return-1;57.58.59./将连接付给 SSL60.EXIT_IF_TRUE(ssl=SSL_new(ctx)=NULL);61.SSL_set_fd(ssl,nFd);62.EXIT_IF_TRUE(SSL_connect(ssl)!=1);63.64./进行操作65.sprintf(szBuffer,thisisfromclient%d,getpid();66.SSL_write(ssl,szBuffer,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家居建材行业市场格局与发展趋势研究
- 健身行业发展和市场需求分析
- 肝肾同补抗癌机制-洞察及研究
- 北京市特需医疗服务项目协议书6篇
- 吉林省白城市实验高级中学2025-2026学年高二上学期开学考试地理试卷
- 湖北省2025-2026学年七年级语文上学期第一次月考复习试卷(含答案)
- 安徽省合肥市庐阳区2024-2025学年八年级下学期3月月考生物试题(含答案)
- 部门手册培训课件
- 部门安全培训课件
- 遨游汉字王国展示课课件
- 电缆敷设施工方案及安全措施
- 三级电工职业技能等级认定理论考试复习题及答案
- 肾性贫血的诊治进展课件
- 八年级上册《生命 生态 安全》计划
- 《济南的冬天》课后习题参考答案
- DB23T 3773-2024 坡耕地玉米田套种毛叶苕子栽培技术规程
- 企业级IPv6网络改造及升级服务合同
- 地基沉降量计算-地基沉降自动计算表格
- 巨人通力电梯NOVA GKE调试说明书故障代码GPN15 GVN15-GKE - 51668093D01-2022
- 2024年全国企业员工全面质量管理知识竞赛考试原题库资料(含答案)
- 《弟子规》全文及解释(拼音版)
评论
0/150
提交评论