`

SSL+socket 详解-概念

阅读更多

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

服务器端需要:

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

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

客户端需要:

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

    2Trust 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)   客户端未持有密钥和安全证书,此时服务器端和客户端也不可以进行正常通信。

分享到:
评论
1 楼 LUCKYZHOUSTAR 2016-03-31  
没有实例吗

相关推荐

    利用C#实现SSLSocket加密通讯的方法详解

    主要给大家介绍了关于如何利用C#实现SSLSocket加密通讯的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    SSL工作原理详解

    SSL是Security Socket Layer的缩写,技术上称为安全套接字,可以简称为加密通讯协议。  当选择“SSL安全登录”后登录网站,用户名和密码会首先加密,然后通过SSL连接在 Internet 上传送,没有人能够读取或访问到您...

    SSL工作原理详解说明

    SSL是Security Socket Layer的缩写,技术上称为安全套接字,可以简称为加密通讯协议。  当选择“SSL安全登录”后登录网站,用户名和密码会首先加密,然后通过SSL连接在 Internet 上传送,没有人能够读取或访问到您...

    TLSSSL协议详解

    SSL全称是“Secure Socket Layer”,字面上可以从“Secure”单词可以看出,SSL是负责“安全”传输的,并不关心传输的内容是什么。而HTTPS只是SSL应用的一种,即用SSL加密HTTP内容(普遍采用443端口),SSL还可以加密...

    细细品味架构·从零开始搭建高可用IM系统(第3期)

    2.1 SSL 协议详解 2.1.1 密码学概念 2.1.2 相关加密介绍 2.1.3 SSL 介绍及特性 2.1.4 SSH 的基本原理 2.2 Rss 与Feed 的概念区别 2.3 基于XMPP 协议的手机通讯方案 2.3.1 开发背景 2.3.2 Xmpp 协议介绍 2.3.3 ...

    详解Https是如何确保安全的?

    即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL内容加密建立一个信息安全通道,来保证数据传输的安全;身份认证确认网站的真实性数据完整性防止内容被第三方冒充或者篡改对数据进行加解密...

    独立部署小程序基于nodejs的服务器过程详解

    实现socket长连接 一个基于socket的小游戏 源代码在这里: 基础要求 有一台服务器(在外网能访问的服务器) 有一个已经备案的域名(必须备案) 有一个已经申请的https证书域名(二级即可) 客户端代码: 我的实验...

    亮剑.NET深入体验与实战精要2

    7.9.2 采用SSL实现加密传输 302 7.9.3 访问IP限制 315 7.10 Web Service开发中需要注意的问题 316 本章常见技术面试题 320 常见面试技巧之经典问题巧回答 320 本章小结 321 第8章 用户体验的杀手锏—— Ajax 323 8.1...

    亮剑.NET深入体验与实战精要3

    7.9.2 采用SSL实现加密传输 302 7.9.3 访问IP限制 315 7.10 Web Service开发中需要注意的问题 316 本章常见技术面试题 320 常见面试技巧之经典问题巧回答 320 本章小结 321 第8章 用户体验的杀手锏—— Ajax 323 8.1...

Global site tag (gtag.js) - Google Analytics