- 1、本文档共142页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
windows网络编程第9章全解
8.结束SSL通信,释放资源 res = SSL_shutdown(sslSocket);//通知关闭SSL套接字,一般第一次res==0,当单向关闭时只须关闭这一次即可; if(!res) //再次调用关闭(双向关闭时须再次调用); { shutdown(connectSocket,1); res = SSL_shutdown(sslSocket); } switch(res) { case 1: break; case 0: case -1: default: perror(Shutdown failed!); exit(-1); } ? 接上 SSL_free (sslSocket);//释放SSL套接字; SSL_CTX_free(sslCTX);//释放SSL会话环境; WSACleanup();//结束 Windows Sockets DLL 的使用。 getchar(); // 暂停,等待用户输入 return 0; 服务器程序的运行界面 9.4.3 开发基于OpenSSL的客户端程序 1.定义常量 2.初始化SSL环境 3.加载客户端证书 4.正常的Socket通信 5.SSL通信 6.结束SSL通信,释放资源 1.定义常量 #define ClientCertFile client.crt //客户端的证书(需经CA签名); #define ClientKeyFile client.key //客户端的私钥(建议加密存储); #define CACertFile ca.crt //CA的证书; #define Port 8989 //服务端的端口; #define ServerAddress //服务端的IP地址; 2.初始化SSL环境 下面的代码都定义在主函数_tmain()函数中。初始化SSL环境的代码与服务器程序相同,请参照9.4.2小节理解。 3.加载客户端证书 //制定证书验证方式; SSL_CTX_set_verify(sslCTX,SSL_VERIFY_PEER,NULL); //加载CA证书; SSL_CTX_load_verify_locations(sslCTX,CACertFile,NULL); ? //为SSL会话加载用户(client.crt)证书; if (SSL_CTX_use_certificate_file(sslCTX, ClientCertFile, SSL_FILETYPE_PEM) = 0) { ERR_print_errors_fp(stderr); exit(-2); } ? 接上 //为SSL会话加载用户私钥(client.key); if (SSL_CTX_use_PrivateKey_file(sslCTX, ClientKeyFile, SSL_FILETYPE_PEM) = 0) { ERR_print_errors_fp(stderr); getchar(); exit(-3); } ? //验证证书与私匙是否相符; if (!SSL_CTX_check_private_key(sslCTX)) { printf(Private key does not match the certificate public key!\n); getchar(); exit(-4); } 加载服务器端证书的过程 (1)调用SSL_CTX_set_verify()函数设置证书验证方式。参数SSL_VERIFY_PEER表示希望希望验证对方的证书。 (2)调用SSL_CTX_use_certificate_file函数加载客户端证书。注意,运行客户端程序之前,需要将ca.crt,client.crt,client.key三个文件复制到本实例的可执行文件目录下,以便程序可以找到它们。 (3)调用CTX_use_PrivateKey_file ()函数加载服务器端私钥文件client.key。程序运行到此处会要求用户输入client.key的密码123456。 (4)调用SSL_CTX_check_private_key()函数验证证书与私匙是否相符。 (5)调用SSL_CTX_set_cipher_list ()函数设置证书验证方式。 4.正常的Socket通信 //构建随机数生成机制,WIN32平台必需: srand( (unsigned)time( NULL ) ); int seed_int[100]; //存放随机序列 for( int i = 0; i 100;i++ )
您可能关注的文档
- web数据挖掘__6数据挖掘的预处理技术全解.ppt
- Web服务与Web服务组合全解.ppt
- 第十五讲工件在夹具上加工的精度与夹具的经济摘要.ppt
- Week1--WritinginCET6全解.ppt
- Week03软件开发工具功能与结构全解.ppt
- web网络安全攻击与防护全解.doc
- W008文艺唯美动态模版全解.ppt
- whatdoeshedo_story_time全解.ppt
- 第十六章家庭电路与安全用电.摘要.ppt
- WiFi关键参数EVM分析全解.ppt
- 2024年华为认证试卷及答案详解参考.docx
- 特种作业煤矿安全作业试题附完整答案详解(历年真题).docx
- 2024年特种作业煤矿安全作业考试历年机考真题集附参考答案详解【完整版】.docx
- 2024年华为认证能力检测试卷附答案详解(夺分金卷).docx
- 2024年特种作业煤矿安全作业考前冲刺练习题及答案详解(全国通用).docx
- 2025至2030卫星行业市场深度调研及前景趋势与行业项目调研及市场前景预测评估报告.docx
- 2025至2030卫星通信行业市场深度分析及竞争格局与投资价值报告.docx
- 2025至2030卫星遥感行业市场运行分析及发展前景与投资机会报告.docx
- 2025至2030卫星行业市场发展现状及竞争形势与投资前景报告.docx
- 2025至2030卫星电视设备行业市场发展分析与发展前景及有效策略与实施路径评估报告.docx
文档评论(0)