windows网络编程第9章讲述.ppt

  1. 1、本文档共142页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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++ )

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档