收藏 分享(赏)

第19章-利用openssl实现安全的web-server程序.ppt

上传人:无敌 文档编号:55845 上传时间:2018-03-08 格式:PPT 页数:23 大小:482.02KB
下载 相关 举报
第19章-利用openssl实现安全的web-server程序.ppt_第1页
第1页 / 共23页
第19章-利用openssl实现安全的web-server程序.ppt_第2页
第2页 / 共23页
第19章-利用openssl实现安全的web-server程序.ppt_第3页
第3页 / 共23页
第19章-利用openssl实现安全的web-server程序.ppt_第4页
第4页 / 共23页
第19章-利用openssl实现安全的web-server程序.ppt_第5页
第5页 / 共23页
点击查看更多>>
资源描述

1、计算机网络高级软件编程技术,1,吴功宜 董大凡王 珺 刘 乾,“十一五”国家重点图书 计算机科学与技术学科前沿丛书计算机科学与技术学科研究生系列教材(中文版) 计算机网络 高级软件编程技术,计算机网络高级软件编程技术,2,第19章利用OpenSSL实现安全的Web Server程序,计算机网络高级软件编程技术,3,概述,由于HTTP采用明文传输,因此网络传输中的重要数据有被第三方截获的危险。HTTPS使用SSL在发送方将原始数据进行加密,然后在接收方进行解密,有利于Web数据的安全传输,计算机网络高级软件编程技术,4,编程训练目的编程训练要求相关知识介绍程序设计分析扩展与提高,提纲,计算机网络

2、高级软件编程技术,5,编程训练目的,在基础类编程训练10的基础上,掌握基于OpenSSL协议的安全Web Server的软件结构的设计与编程实现掌握利用OpenSSL生成认证证书的方法熟悉客户端认证与利用IPSec实现安全通信的方法,计算机网络高级软件编程技术,6,编程训练目的编程训练要求相关知识介绍程序设计分析扩展与提高,提纲,计算机网络高级软件编程技术,7,编程训练要求,编写程序,利用OpenSSL实现安全的Web Server,具体要求如下 :Server启动时可指定端口,缺省为443可指定Web Server根目录的路径,比如C:ServerServer应能够并发处理多个请求,要求至少

3、能支持Get命令。可以增强Web Server的功能,如支持Head、Post以及Delete命令等书写必要的客户端测试程序用于发送HTTPS请求并显示返回结果,也可使用一般的Web浏览器测试,计算机网络高级软件编程技术,8,程序运行的参考界面,计算机网络高级软件编程技术,9,编程训练目的编程训练要求相关知识介绍程序设计分析扩展与提高,提纲,计算机网络高级软件编程技术,10,SSL协议,SSL协议栈,计算机网络高级软件编程技术,11,SSL握手协议工作过程,计算机网络高级软件编程技术,12,OpenSSL库,OpenSSL库的安装 安装VC+ 6.0从官方网站http:/ 在VC的Includ

4、e files中增加OpenSSLinc32目录在Libray files中增加openssl-0.9.8out32dll目录其中,OpenSSL表示OpenSSL的安装目录,计算机网络高级软件编程技术,13,OpenSSL的命令行接口,OpenSSL为用户提供的命令行接口功能非常丰富,如创建和管理证书、生成消息摘要、加密和解密文件等 其命令行格式如下:openssl command command_opts command_args command可以为x509、md5、sha1、des、idea等,计算机网络高级软件编程技术,14,OpenSSL的编程接口,初始化OpenSSL库建立上下文

5、环境建立连接使用连接完成应用数据交换关闭连接并释放相关资源,计算机网络高级软件编程技术,15,编程训练目的编程训练要求相关知识介绍程序设计分析扩展与提高,提纲,计算机网络高级软件编程技术,16,客户端与服务器的握手过程,计算机网络高级软件编程技术,17,程序主要部分的实现,初始化OpenSSL库建立上下文环境,SSL_library_init();/ 加载OpenSSL将会用到的算法SSL_load_error_strings();/ 加载错误字符串,SSL_METHOD *meth;SSL_CTX *ctx; /SSL_CTX对象meth = SSLv23_method(); /相应的SSL

6、结构能理解SL2.0、3.0以及TSL1.0ctx = SSL_CTX_new(meth); /创建一个上下文环境/指定所使用的证书文件SSL_CTX_use_certificate_chain_file(ctx, “server.pem”); /设置密码回调函数SSL_CTX_set_default_passwd_cb(ctx, password_cb);/ 加载私钥文件SSL_CTX_use_PrivateKey_file(ctx,“server.pem”,SSL_FILETYPE_PEM); / 加载受信任的CA证书SSL_CTX_load_verify_locations(ctx, r

7、oot.pem, 0);,计算机网络高级软件编程技术,18,程序主要部分的实现(续),创建一个流式套接字在某个端口侦听创建ListenThread线程,接受客户端连接请求创建ClientThread线程处理客户请求关闭连接并释放相关资源,/ 在ClientThread线程完成客户端的请求后,需要释放以下资源:SSL_shutdown(ssl); / 关闭SSL连接SSL_free(ssl);/ 释放SSL结构/ 在服务器结束服务之前还需要释放在第2步中创建的SSL上下文环境:SSL_CTX_free(ctx);,计算机网络高级软件编程技术,19,Server端认证证书的生成,建立CA中心 生成

8、CA中心的私钥openssl req -newkey rsa:1024 -sha1 -keyout rootkey.pem -out rootreq.pem生成CA中心的自签证书openssl x509 -req -in rootreq.pem -sha1 -extensions v3_ca -days 365 -signkey rootkey.pem -out rootcert.pem生成Web服务器的私钥和认证请求openssl req -newkey rsa:1024 -sha1 -keyout serverkey.pem -out serverreq.pem为Web服务器签发证书 op

9、enssl x509 -req -in serverreq.pem -sha1 -extensions usr_cert -CA rootcert.pem -CAkey rootkey.pem -CAcreateserial -out server.pemserver.pem即为CA中心为Web服务器签发的证书,计算机网络高级软件编程技术,20,编程训练目的编程训练要求相关知识介绍程序设计分析扩展与提高,提纲,计算机网络高级软件编程技术,21,扩展与提高,客户端认证OpenSSL提供的相关API如下:设置可信CA证书文件int SSL_CTX_load_verify_locations( SS

10、L_CTX *ctx, const char * cafile, const char * cadir);设置认证模式 int SSL_CTX_set_verify(SSL_CTX *ctx, int mode, int (*verify_callback) (int, X509_STORE_CTX *);使用双向认证模式需要将mode的值置为: SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT,计算机网络高级软件编程技术,22,扩展与提高,基于IPSec的安全通信 1. IPSec体系结构,计算机网络高级软件编程技术,23,扩展与提高,基于IPSec的安全通信 2. IPSec工作模式,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报