SSL+socket详解

转自:http://hengstart.iteye.com/blog/842529

一、        SSL概述

SSL协议采用数字证书及数字签名进行双端实体认证,用非对称加密算法进行密钥协商,用对称加密算法将数据加密后进行传输以保证数据的保密性,并且通过计算数字摘要来验证数据在传输过程中是否被篡改和伪造,从而为敏感数据的传输提供了一种安全保障手段。

SSL协议提供的服务主要有:

1)认证用户和服务器,确保数据发送到正确的客户机和服务器

认证用户和服务器的合法性,使它们能够确信数据将被发送到正确的客户机和服务器上。客户机和服务器都有各自的识别号,这些识别号由公开密钥进行编号,为验证用户是否合法,SSL协议要求在握手交换数据时进行数字认证,以此确保用户的合法性。

2)加密数据以防止数据中途被窃取

SSL协议所采用的加密技术既有对称密钥技术,也有公开密钥技术。在客户机和服务器进行数据交换前,交换SSL初始握手信息,在SSL握手信息中采用了各种加密技术对其进行加密,以保证其机密性和数据的完整性,并且用数字证书进行鉴别,这样就可以防止非法用户进行破译。

3)维护数据的完整性,确保数据在传输过程中不被改变

SSL协议采用Hash函数和机密共享的方法提供信息的完整性服务,建立客户机和服务器之间的安全通道,使所有经过SSL协议处理的业务在传输过程中能全部完整准确无误的到达目的地。

SSL体系结构:

SSL协议位于TCP/IP协议模型的网络层和应用层之间,使用TCP来提供一种可靠的端到端的安全服务,它是客户/服务器应用之间的通信不被攻击抓取,并且始终对服务器进行认证,还可以选择对客户进行认证。SSL体系结构如图1所示。

SSL体系结构:

SSL协议位于TCP/IP协议模型的网络层和应用层之间,使用TCP来提供一种可靠的端到端的安全服务,它是客户/服务器应用之间的通信不被攻击抓取,并且始终对服务器进行认证,还可以选择对客户进行认证。

在SSL通讯中,首先采用非对称加密交换信息,使得服务器获得浏览器端提供的对称加密的密钥,然后利用该密钥进行通讯过程中信息的加密和解密。为了保证消息在传递过程中没有被篡改,可以加密HASH编码来确保信息的完整性。SSL通讯过程,如图2所示。

一般情况下, 当客户端是保密信息的传递者时,客户端不需要数字证书验证自己身份的真实性,如电子银行的应用,客户需要将自己的账号和密码发送给银行,因此银行的服务器 需要安装数字证书来表明自己身份的有效性。在某些应用中,服务器端也需要对客户端的身份进行验证,这时客户端也需要安装数字证书以保证通讯时服务器可以辨 别出客户端的身份,验证过程类似于服务器身份的验证过程。

三、SSL Socket双向认证的实现

SSL Socket通信是对Socket通信的拓展。在Socket通信的基础上添加了一层安全性保护,提供了更高的安全性,包括身份验证、数据加密以及完整性验证。

SSL Socket双向认证实现技术: JSSE(Java Security Socket Extension),它实现了SSL和TSL(传输层安全)协议。在JSSE中包含了数据加密,服务器验证,消息完整性和客户端验证等技术。通过使用JSSE,可以在客户机和服务器之间通过TCP/IP协议安全地传输数据。为了实现消息认证:

服务器端需要:

1、KeyStore: 其中保存服务器端的私钥

2、Trust KeyStore: 其中保存客户端的授权证书

客户端需要:

1、KeyStore:其中保存客户端的私钥

2、Trust KeyStore:其中保存服务端的授权证书

密钥和授权证书的生成方法:

使用Java自带的keytool命令,在命令行生成。

1、生成服务器端私钥kserver.keystore文件

keytool -genkey -alias serverkey -validity 1 -keystore kserver.keystore

2、根据私钥,导出服务器端安全证书

keytool -export -alias serverkey -keystore kserver.keystore -file server.crt

3、将服务器端证书,导入到客户端的Trust KeyStore中

keytool -import -alias serverkey -file server.crt -keystore tclient.keystore

4、生成客户端私钥kclient.keystore文件

keytool -genkey -alias clientkey -validity 1  -keystore kclient.keystore

5、根据私钥,导出客户端安全证书

keytool -export -alias clientkey -keystore kclient.keystore -file client.crt

6、将客户端证书,导入到服务器端的Trust KeyStore中

keytool -import -alias clientkey -file client.crt -keystore tserver.keystore

生成的文件分成两组,服务器端保存:kserver.keystore tserver.keystore 客户端保存:kclient.keystore  tclient.kyestore。

客户端采用kclient.keystore中的私钥进行数据加密,发送给服务端,服务器端采用tserver.keystore中的client.crt证书对数据解密,如果解密成功,证明消息来自可信的客户端,进行逻辑处理; 服务器端采用kserver.keystore中的私钥进行数据加密,发送给客户端,客户端采用tclient.keystore中的server.crt证书对数据解密,如果解密成功,证明消息来自可信的服务器端,进行逻辑处理。如果解密失败,那么证明消息来源错误。不进行逻辑处理。

SSL Socket双向认证的安全性:

(1)可以确保数据传送到正确的服务器端和客户端。

(2)可以防止消息传递过程中被窃取。

(3)防止消息在传递过程中被修改.。

在系统运行中可能出现以下情况:

(1)   服务器端、客户端都持有正确的密钥和安全证书,此时服务器端和客户端可以进行正常通信。

(2)   客户端的密钥和安全证书不正确,此时服务器端和客户端不可以进行正常通信。

(3)   客户端未持有密钥和安全证书,此时服务器端和客户端也不可以进行正常通信。

时间: 2024-10-18 03:03:34

SSL+socket详解的相关文章

CentOS6.5环境下OpenSSL实战:自己搭建CA中心,申请,签发,吊销,导入证书,SSL 握手详解

CentOS6.5环境下OpenSSL实战: 自己搭建CA中心,申请,签发,吊销,导入证书,SSL 握手详解

转:iOS中socket详解

一.网络各个协议:TCP/IP.SOCKET.HTTP等 网络七层由下往上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 其中物理层.数据链路层和网络层通常被称作媒体层,是网络工程师所研究的对象: 传输层.会话层.表示层和应用层则被称作主机层,是用户所面向和关心的内容. http协议   对应于应用层 tcp协议    对应于传输层 ip协议     对应于网络层 三者本质上没有可比性.  何况HTTP协议是基于TCP连接的. TCP/IP是传输层协议,主要解决数据如何在网络

网络之Socket详解

网络之Socket详解 1.什么是Socket? Socket本质上还是文件,因为Linux上一切皆文件.Socket也有对应的文件描述符(fd).文件描述符相关的参考另外一篇博客. http://blog.csdn.net/weililansehudiefei/article/details/78113082 在这里简单就认为,它是对应着一个文件的,就可以. Socket位于TCP/IP之上,通过Socket可以方便的进行通信连接.对外屏蔽了复杂的TCP/IP. 2.Socket连接详解 So

https SSL协议详解(转)

https协议详解 SSL (Secure Socket Layer) HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 https协议详解      HTTPS以保密为目标研发,简单讲是HTTP的安全版.其安全基础是SSL协议,因此加密的详细内容请看SSL.全称Hypertext Transfer Protocol over Secure Socket Layer.       它是一个URI scheme,句法类同http:体系.它使用了H

计算机基础-Socket详解

Linux的SOCKET编程详解 1. 网络中进程之间如何通信 进 程通信的概念最初来源于单机系统.由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进 程之间既互不干扰又协调一致工作,操作系统为进程通信提供了相应设施,如 UNIX BSD有:管道(pipe).命名管道(named pipe)软中断信号(signal) UNIX system V有:消息(message).共享存储区(shared memory)和信号量(semaphore)等. 他们都仅限于用在本机进程之间通信.网间进

Socket详解-Linux Socket编程(不限Linux)

"一切皆Socket!" 话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket. --有感于实际编程和开源项目研究. 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的.本文的主要内容如下: 1.网络中进程之间如何通信?

SSL协议详解

http://kb.cnblogs.com/page/162080/ 背景介绍    最近在看<密码学与网络安全>相关的书籍,这篇文章主要详细介绍一下著名的网络安全协议SSL. 在开始SSl介绍之前,先给大家介绍几个密码学的概念和相关的知识. 1.密码学的相关概念 密码学(cryptography):目的是通过将信息编码使其不可读,从而达到安全性. 明文(plain text):发送人.接受人和任何访问消息的人都能理解的消息. 密文(cipher text):明文消息经过某种编码后,得到密文消

[转]SSL协议详解

背景介绍    最近在看<密码学与网络安全>相关的书籍,这篇文章主要详细介绍一下著名的网络安全协议SSL. 在开始SSl介绍之前,先给大家介绍几个密码学的概念和相关的知识.     1.密码学的相关概念 密码学(cryptography):目的是通过将信息编码使其不可读,从而达到安全性.明文(plain text):发送人.接受人和任何访问消息的人都能理解的消息.密文(cipher text):明文消息经过某种编码后,得到密文消息.加密(encryption):将明文消息变成密文消息.解密(d

SSL VPN 详解

SSL VPN是专栏VPN系列技术原理的最后一篇,SSL VPN作为远程接入型的VPN,已经具备非常广阔的前景,它的主要适应场景是取代L2TP Over IPSec,但功能要比L2TP Over IPSec更丰富,方案也更加灵活. 一.     SSL VPN简介 何谓SSL VPN,首先要从SSL谈起,使用网络不能不提的是各个网站,浏览网站使用浏览器,网络上传送网页的协议叫HTTP,它是明文传播的,传播内容可以被黑客读取.而SSL全名叫Secure Session Layer(安全会话层),其