- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
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++ )
您可能关注的文档
- win2003活动目录解说.ppt
- 2016安徽中考物理复习第1课时_声现象_解说.ppt
- LNG牵引车气瓶保养与维修2012.4解说.ppt
- Win2008安全配置与维护-副本解说.ppt
- AT4现场培训手册解说.ppt
- ATaleofTwoCities解说.ppt
- ATBC增塑剂项目设计解说.ppt
- WINCC--项目开始解说.ppt
- Atlas_Copco空压机常见故障排除解说.ppt
- LNG特性、槽车安全操作解说.ppt
- 内蒙古自治区鄂尔多斯市第一中学2025-2026学年第一学期高一年级学业诊断检测12月月考语文试卷含答案.pdf
- 四川省2025-2026学年高三上学期12月阶段性自测地理试卷含答案.pdf
- 林区蓄水池防火配套建设指南.ppt
- 四川省2025-2026学年高三上学期12月阶段性自测历史试卷含答案.pdf
- 云南省2025-2026学年高三上学期12月阶段性自测地理试卷含答案.pdf
- 火灾区域生态修复实施指南.ppt
- 云南省2025-2026学年高三上学期12月阶段性自测历史试卷含答案.pdf
- 云南省2025-2026学年高三上学期12月阶段性自测日语试卷含答案.pdf
- 2025年水产养殖科技合作协议(鱼苗).docx
- 2025年水产养殖苗种繁育合作协议协议.docx
最近下载
- 2025年注册港口与航道工程师考试题库(附答案和详细解析)(0811).docx VIP
- 2026届上海市浦东新区高三上学期一模数学试卷和答案.docx VIP
- 图形的拼组练习题.docx VIP
- 西华大学《城市设计原理》2023-2024学年第一学期期末试卷 .pdf VIP
- 通快激光切割机trulaser3030培训教材_图文.pdf VIP
- 2025年注册港口与航道工程师考试题库(附答案和详细解析)(0813).docx VIP
- 2025年注册港口与航道工程师考试题库(附答案和详细解析)(0831).docx VIP
- 牛津高中英语语法【主谓一致】(汇编).pdf VIP
- 6楼普外科火灾演练脚本(两篇).docx
- DB53 T 1391-2025蓝莓基质栽培技术规程.docx VIP
原创力文档


文档评论(0)