ssl协议未开启如何处理.docx
- 文档编号:3250203
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:9
- 大小:21.60KB
ssl协议未开启如何处理.docx
《ssl协议未开启如何处理.docx》由会员分享,可在线阅读,更多相关《ssl协议未开启如何处理.docx(9页珍藏版)》请在冰豆网上搜索。
ssl协议未开启如何处理
竭诚为您提供优质文档/双击可除
ssl协议未开启如何处理
篇一:
ssl协议_openssl_附代码
ssl协议
1实验原理
1.1ssl协议
ssl(securesocketlayer,安全套接字层)在通信双方间建立了一个传输层安全通道,它使用对称加密来保证通信保密性,使用消息认证码(mac)来保证数据完整性,并且在建立连接时主要使用pki对通信双方进行身份认证。
netscapenavigator和internetexplorer都支持ssl。
1.2ssl协议的分层结构
ssl协议基于c/s(client/server)模式,位于tcp/ip协议与各种应用层协议之间,为数据通信提供安全支持。
它可分为两层:
1.ssl记录协议(sslRecordprotocol)
它建立在可靠的传输控制协议(如tcp)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。
2.ssl握手协议(sslhandshakeprotocol)
它建立在ssl记录协议之上,用于在实际的数据传输开始前,通信双方进行身份认证、协商加密算法、交换加密密钥等。
作为分层的协议,在每一层,消息可以包含长度、描述和内容字段。
ssl发出消息,先把数据分成可管理的块,然后压缩、加密并发出加密后的结果。
接收消息后进行解密、验证、解压和重组,再把结果发往更高一层的客户。
1.3ssl握手协议
ssl握手协议的作用是在正式的秘密通信之前,让服务器和客户之间互相鉴别对方的身份并协商一种会话的加密算法和加密密钥,主要可分为以下两个方面:
(1)客户端和服务器端之间互相验证身份
c/s主要是通过证书来验证,首先通过对方证书中权威发证机构签字的验证,
来确定对方拥有的证书是否有效。
如果证书有效,接着就从这个证书中提取出公钥,通过对方的签名验证用户是不是假冒的。
如果二者都通过,则证明对方的身份是真实可信的。
其中服务器对客户端的验证是可选的。
(2)客户端和服务器之间协商安全参数
协商的参数一般包括协议的版本号、密钥交换算法、数据加密算法和hash算法,通过协商达成一致性。
其中版本号一般要求一致。
关于密钥交换算法和数据加密算法,是先由客户端向服务器端发送一个列表,其中详细列举了客户端所支持的算法,然后由服务器端从中选取自己支持且加密性能优良的算法,将其返回给客户端,至此完成了算法的协商;最后由客户端随机产生一个用于数据加密的对称密钥,用一种商议好的密钥交换协议将它传给服务器端。
ssl支持的密钥交换算法有Rsa密钥交换和diffie-hellman密钥交换两种。
ssl握手协议顺序图
2实验内容
2.1实验环境
1、win72、Vs20xx
3、openssl函数库
2.2实验代码
2.2.1server端
//ssl_server.cpp:
定义控制台应用程序的入口点。
//
//server
#include"stdafx.h"
#include
#include
#include
#include"openssl/x509.h"
#include"openssl/ssl.h"
#include"openssl/err.h"
#definemsglength1024
#definepoRt8888
#definecaceRt"./private/ca.crt"
#definesVRceRtF"./certs/server.crt"
#definesVRkeyF"./private/server.key"
#pragmacomment(lib,"wsock32.lib")
#pragmacomment(lib,"libeay32.lib")
#pragmacomment(lib,"ssleay32.lib")
int_tmain(intargc,_tchaR*argv[])
{
wsadatawsadata;
wsastartup(makewoRd(2,2),
socketsock;
ssl_method*meth;
ssl_ctx*ctx;
ssl*ssl;
//ssl初始化
openssl_add_ssl_algorithms();
//ssl错误信息初始化
ssl_load_error_strings();
//创建本次会话所使用的协议
meth=(ssl_method*)tlsv1_server_method();
//申请ssl会话的环境
ctx=ssl_ctx_new(meth);
if(null==ctx)
exit
(1);
//设置会话的握手方式并加载ca证书
ssl_ctx_set_verify(ctx,ssl_VeRiFy_peeR,null);
if(!
ssl_ctx_load_verify_locations(ctx,caceRt,null)){}printf("%d\n\n下载ca证书出错!
\n",ssl_ctx_load_verify_locations(ctx,caceRt,exit(-1);null));
//加载服务器端的证书
if(!
ssl_ctx_use_certificate_file(ctx,sVRceRtF,ssl_Filetype_pem)){eRR_print_errors_fp(stderr);
exit
(1);
}
//加载服务器端的私钥
if(!
ssl_ctx_use_privatekey_file(ctx,sVRkeyF,ssl_Filetype_pem)){eRR_print_errors_fp(stderr);
exit
(1);
}
//检查服务器端的证书和私钥是否匹配
if(!
ssl_ctx_check_private_key(ctx)){
printf("\n\n私钥与证书公钥不匹配!
\n");
exit
(1);
}
//加密方式
ssl_ctx_set_cipher_list(ctx,"Rc4-md5");
//处理握手多次
ssl_ctx_set_mode(ctx,ssl_mode_auto_RetRy);
/*以下是正常的tcpsocket建立过程..............................*/
sock=socket(aF_inet,sock_stReam,0);
if(sock==inValid_socket){
printf("\n\nsocket有问题.\n");
return0;
}
sockaddr_inaddr;
memset(\0,sizeof(addr));
addr.sin_family=aF_inet;
addr.sin_port=htons(poRt);/*serverportnumber*/
addr.sin_addr.s_addr=inaddR_any;
//绑定sock
intnResult=bind(sock,(sockaddr*)
if(nResult==socket_eRRoR){
printf("\n\n绑定socket有问题.\n");
return0;
}
/*接受tcp链接*/
sockaddr_insa_cli;
interr=listen(sock,5);
if(-1==err)
exit
(1);
intclient_len=sizeof(sa_cli);
intss=accept(sock,(structsockaddr*)
if(ss==-1){
exit
(1);
}
closesocket(sock);
printf("\n连接端口:
%d,port%d\n",sa_cli.sin_addr.s_addr,sa_cli.sin_port);/*tcp链接已建立.开始ssl握手过程..........................*/
//绑定套接字
ssl=ssl_new(ctx);
if(null==ssl)
exit
(1);
if(!
ssl_set_fd(ssl,ss)){
printf("\n连接失败!
\n");
exit
(1);
}
//ssl握手
//ssl_accept(ssl);
intk=ssl_accept(ssl);
if(k!
=1){
printf("%d\n",k);
printf("\n连接失败!
\n");
exit
(1);
}
//进行信息验证
x509*client_cert;
client_cert=ssl_get_peer_certificate(ssl);
printf("\n**************************************\n");printf("\n服务器启动成功,端口:
%d\n\n等待连接.....\n",poRt);
篇二:
ssl协议
1、引言
ssl是一种在客户端和服务器端之间建立安全通道的协议。
ssl一经提出,就在internet上得到广泛的应用。
ssl最常用来保护web的安全。
为了保护存有敏感信息web的服务器的安全,消除用户在internet上数据传输的安全顾虑。
openssl是一个支持ssl认证的服务器.它是一个源码开放的自由软件,支持多种操作系统。
openssl软件的目的是实现一个完整的、健壮的、商业级的开放源码工具,通过强大的加密算法来实现建立在传输层之上的安全性。
openssl包含一套ssl协议的完整接口,应用程序应用它们可以很方便的建立起安全套接层,进而能够通过网络进行安全的数据传输。
2、ssl协议概述
ssl是securesocketlayer英文缩写,它的中文意思是安全套接层协议,指使用公钥和私钥技术组合的安全网络通讯协议。
ssl协议是网景公司(netscape)推出的基于web应用的安全协议,ssl协议指定了一种在应用程序协议(如http、telenet、nmtp和Ftp等)和tcp/ip协议之间提供数据安全性分层的机制,它为tcp/ip连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证,主要用于提高应用程序之间数据的安全性,对传送的数据进行加密和隐藏,确保数据在传送中不被改变,即确保数据的完整性。
ssl以对称密码技术和公开密码技术相结合,可以实现如下三个通信目标:
(1)秘密性:
ssl客户机和服务器之间传送的数据都经过了加密处理,网络中的非法窃听者所获取的信息都将是无意义的密文信息。
(2)完整性:
ssl利用密码算法和散列(hash)函数,通过对传输信息特征值的提取来保证信息的完整性,确保要传输的信息全部到达目的地,可以避免服务器和客户机之间的信息受到破坏。
(3)认证性:
利用证书技术和可信的第三方认证,可以让客户机和服务器相互识别对方的身份。
为了验证证书持有者是其合法用户(而不是冒名用户),ssl要求证书持有者在握手时相互交换数字证书,通过验证来保证对方身份的合法性。
3、ssl协议的体系结构
ssl协议位于tcp/ip协议模型的网络层和应用层之间,使用tcp来提供一种可靠的端到端的安全服务,它是客户/服务器应用之间的通
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ssl 协议 开启 如何 处理