一、 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) 客户端未持有密钥和安全证书,此时服务器端和客户端也不可以进行正常通信。
分享到:
相关推荐
「C#实现SSLSocket加密通讯方法详解」 在网络通讯中,安全性是一个非常重要的方面,而SSL/TLS协议则是最常用的加密通讯协议之一。C#作为一个强大的编程语言,可以轻松地实现SSL/TLS协议的加密通讯。下面将详细介绍...
#### 三、SSL应用指导详解 ##### 3.1 SSL的基本概念 - **SSL(Secure Socket Layer)**是一种用于建立互联网上安全连接的协议,它通过加密数据来防止数据被窃听、篡改或伪造。 - SSL协议位于TCP/IP协议与各种应用...
《构建与应用libcurl+ssl+zlib:MFC环境下的静态库详解》 在软件开发过程中,有时我们需要在MFC(Microsoft Foundation Classes)环境中利用网络功能,这时libcurl库便成为一个理想的选择。libcurl是一个开源的库,...
SSL(Secure Socket Layer)是一种广泛使用的网络安全协议,其主要任务是提供加密通信和身份认证,确保数据在网络传输过程中的安全性和完整性。SSL的工作原理涉及到多个关键概念和技术。 首先,SSL的核心在于加密,...
《Delphi跨平台Socket编程详解》 在计算机网络编程领域,Socket是一种标准接口,它允许应用程序通过网络进行通信。在Delphi开发环境中,利用Socket技术可以实现跨平台的网络通信,这在移动应用、分布式系统以及实时...
### Java编程中的Socket与网络编程详解 #### 一、Socket编程概述 Socket编程是Java网络编程的核心技术之一,主要用于实现不同计算机之间的通信。通过Socket,应用程序可以在网络上发送和接收数据,实现分布式系统...
### Linux Socket编程详解 #### 知识点五:Socket API - **函数调用**:在Linux中,Socket编程主要依赖于一系列系统调用,包括`socket()`、`bind()`、`listen()`、`accept()`、`connect()`、`send()`、`recv()`等。...
- **安全功能**:增强了安全特性,例如支持SSL/TLS协议,提高数据传输的安全性。 - **IPv6支持**:全面支持IPv6协议,满足未来互联网的需求。 #### 四、Windows Sockets网络编程指导 ##### 4.1 网络编程流程 1. *...
#### 一、基本概念与工具介绍 在Windows系统中,可以通过命令提示符下的`net helpmsg [错误代码]`来获取特定错误码的详细解释。例如,如果想查询错误代码10060的信息,只需在命令行中输入`net helpmsg 10060`即可。...
Java通过JSSE(Java Secure Socket Extension)提供对SSL/TLS协议的支持。在Java中,SSL配置主要涉及以下几个组件: 1. **KeyManager**:管理服务器的密钥对,用于身份认证。 2. **TrustManager**:负责验证远程...
### TLSSSL协议详解 #### 一、SSL与HTTPS的关系 许多人经常将SSL与HTTPS混淆,认为两者等同。实际上,SSL(Secure Socket Layer,安全套接层)是一种通用的安全协议,其主要职责在于保障数据传输的安全性,而不...
SSL 工作原理详解 SSL(Secure Sockets Layer,安全套接层)是一种安全协议,用于保护在Internet上传输的数据的安全。SSL工作原理是在浏览器和Web服务器之间建立一个安全的连接,以确保数据的机密性、完整性和认证...
WebLogic 配置 SSL 详解 WebLogic 配置 SSL 是指在 WebLogic Server 中配置 SSL(Server Socket Layer)协议,以确保在开放网络(Internet)上安全地传输信息。SSL 协议使用不对称加密技术实现会话双方之间信息的...
《haproxy与lua结合应用详解》 haproxy,全称High Availability Proxy,是一款开源的高可用性负载均衡器,广泛应用于网络服务的前端,为服务器群提供高效的负载分发,确保系统的稳定性和可扩展性。而lua,是一种轻...
SSL(Secure Socket Layer)是一种广泛使用的安全协议,用于在互联网上建立加密的通信链接,确保数据传输的安全性。它的核心作用在于提供数据的保密性和用户身份的验证。 SSL的工作流程通常涉及以下几个步骤: 1. ...