ssl连接建立过程分析.doc

  1. 1、本文档共115页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ssl连接建立过程分析

目录 1. 应用程序接口 2 1.1 SSL初始化 2 1.2 建立SSL新连接 3 1.3 SSL通信 3 1.4 SSL释放 4 2. SSL实现分析 4 2.1 SSL_load_error_strings 4 2.2 SSLeay_add_ssl_algorithms() 5 2.3 SSL23_server_method() 7 2.4 SSL23_client_method() 11 2.5 SSL_CTX_new () 12 2.6 SSL_CTX_set_default_passwd_cb[_userdata]() 18 2.7 SSL_CTX_use_certificate_file() 19 2.8 SSL_CTX_use_PrivateKey_file() 21 2.9 SSL_CTX_check_private_key() 22 2.10 SSL_new 23 2.11 SSL_set_fd 29 2.12 SSL_accept 30 2.13 SSL_connect 58 2.14 SSL_read 79 2.15 SSL_write 103 2.16 SSL_free 113 3. 结论 115 本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。 msn: yfydz_no1@ 来源: 1. 应用程序接口 1.1 SSL初始化 SSL_CTX* InitSSL(int server, char *cert, char *key, char *pw) { SSL_CTX* ctx; SSL_METHOD *meth; int status; // 算法初始化 // 加载SSL错误信息 SSL_load_error_strings(); // 添加SSL的加密/HASH算法 SSLeay_add_ssl_algorithms(); // 服务器还是客户端 If(server) meth = SSLv23_server_method(); else meth = SSLv23_client_method(); // 建立新的SSL上下文 ctx = SSL_CTX_new (meth); if(!ctx) return NULL; // 设置证书文件的口令 SSL_CTX_set_default_passwd_cb_userdata(ctx, pw); //加载本地证书文件 status=SSL_CTX_use_certificate_file(ctx, cert, SSL_FILETYPE_ASN1); if (status = 0) { frintf(stderr, Use cert fail, status=%d\n, status); goto bad; } // 加载私钥文件 if (SSL_CTX_use_PrivateKey_file(ctx, key, SSL_FILETYPE_PEM) = 0) { fprintf(stderr, Use private key fail\n); goto bad; } // 检查证书和私钥是否匹配 if (!SSL_CTX_check_private_key(ctx)) { fprintf(Private key does not match the certificate public key\n); goto bad; } fprintf(Cert and key OK\n); return ctx; bad: SSL_CTX_free (ctx); return NULL; } 1.2 建立SSL新连接 服务器: // 建立SSL ssl = SSL_new (ctx); // 将SSL与TCP socket连接 SSL_set_fd (ssl, sd); //接受新SSL连接 err = SSL_accept (ssl); 客户端: // 建立SSL ssl = SSL_new (ctx); // 将SSL与TCP socket连接 SSL_set_fd (ssl, sd); // SSL连接 err = SSL_connect (ssl); 服务器的SSL_accept()和客户端的SSL_connect()函数共同完成SSL的握手协商过程。 1.3 SSL通信 和普通的read()/

文档评论(0)

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

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

1亿VIP精品文档

相关文档