全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
使用OPENSSL编写服务器和客户端代码实例使用相同的ca生成两个证书,一个是server.cer,一个是client.cer,注意生成server.cer的时候必须指明证书可以用于服务端的。服务器代码:1. #includeopenssl/bio.h 2. #includeopenssl/ssl.h 3. #includeopenssl/err.h 4. 5. #include 6. 7. #defineEXIT_IF_TRUE(x)if(x) 8. do 9. fprintf(stderr,Check%sistruen,#x); 10. ERR_print_errors_fp(stderr); 11. exit(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_algorithms(); 32. OpenSSL_add_all_algorithms(); 33. SSL_load_error_strings(); 34. ERR_load_BIO_strings(); 35. 36. /我们使用SSLV3,V2 37. 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,cacert.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_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. /将连接付给SSL 65. 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. SSL_write(ssl,szBuffer,strlen(szBuffer); 75. 76. /释放资源 77. SSL_free(ssl); 78. SSL_CTX_free(ctx); 79. close(nAcceptFd); 80. 客户端代码1. #includeopenssl/bio.h 2. #includeopenssl/ssl.h 3. #includeopenssl/err.h 4. 5. #include 6. 7. #defineEXIT_IF_TRUE(x)if(x) 8. do 9. fprintf(stderr,Check%sistruen,#x); 10. ERR_print_errors_fp(stderr); 11. 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_load_error_strings(); 31. ERR_load_BIO_strings(); 32. 33. /我们使用SSLV3,V2 34. 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_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,127.0.0.1,8812,30)0) 54. 55. cutil_log_error(连接服务器失败n); 56. return-1; 57. 58. 59. /将连接付给SSL 60. 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,strlen(szBuffer); 67. 68. /释放资源 69. memset(szBuffe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 用户隐秘保护与利用的承诺书7篇范文
- 业务拓展市场分析报告模板
- 员工绩效考核指标模板量化评价
- 航运物流常识题库及答案
- 产品研发阶段质量控制承诺书3篇范文
- 环境治理目标落实责任承诺书8篇
- 2025年农业科技行业现代化种植与绿色生产研究报告及未来发展趋势预测
- 2025年物流行业智能物流应用案例研究报告及未来发展趋势预测
- 2025年旅游行业旅游数字化与旅游体验创新研究报告及未来发展趋势预测
- 医药从业资格证考试及答案解析
- 2025年新修订治安管理处罚法课件
- 2025年度《危险化学品生产企业事故隐患内部报告奖励管理制度》范本+附表
- 医学专业资格认证证明书(5篇)
- 小麦种植技术课件
- 中医适宜技术适应症课件
- 就餐安全课件
- 小区营销的成功案例与经验分享
- 国民经济行业分类代码(2024年版)
- 影视制作行业编剧经验证明书(8篇)
- 身体调养协议书模板
- 儿童舌诊课件
评论
0/150
提交评论