转载请注明出处http://chillwarmoon.iteye.com
1.client向server端发送ssl版本号,cipher设置,随机数(randomly generated data)和其他sever端所要求的信息。
2.server端向client端发送ssl版本号,cipher设置,随机数(randomly generated data)和其他client端所要求的信息。server发送其证书信息,如果是双向认证(client请求server端资源时,server需要对client端进行认证),则请求client发送证书。
3.client端根据server发送过来的信息来认证server,如果认证失败,提示client user不能够建立encrypted and authenticated connection.如果认证成功,执行4。
4.client利用handshake过程所产生的数据为会话建立premaster secret,用server的public key(在第2步的server证书中得到)对其加密。
5.如果server端需要双向认证,client端对another piece of data进行签名,这个数据对于handshake是唯一的,client和server都知道该数据。client发送这个signed data,client的证书和premaster secret.
6.如果server端需要双向认证,server对client端进行认证,如果认证失败,则结束会话,否则server利用private key将premaster secret解密,将解密的premaster secret经过一系列操作生成master secret(client也执行了这些操作,生成了master secret)。
7.client和server利用master secret生成session key,也就是SSL session中用到的对称密钥。
8.client发送消息通知server:以后发消息都用session key加密,然后发送一个加密消息,"client端的handshake完成"。
9.server发送消息通知client:以后发送消息用session key加密,然后发送一个加密消息,"server端的handshake完成"。
10.SSL handshake完成了,SSL session开始了。
Server Authentication
client端接收到了server的证书,怎样和client中的public key来认证服务端呢?需要回答4个问题:
1.server的证书过期了吗?
2.server证书中的issuing CA是trusted CA?
如果server证书中的issuing CA的distinguished name和client的trusted CA的某个证书的distinguished name相同,则答案是肯定的。
如果server证书中的issuing CA没有在trusted CA列表中,但the client can verify a certificate chain ending in a CA that is on the list,仍然可以。
3.client的issuing CA的public key能否验证server证书中的issuer's digital signature?
4.在server证书中的domain name和server的domain name是不是相同的?
如果这些问题都是肯定的,则server认证成功。
英文原文见:
http://docs.sun.com/source/816-6156-10/contents.htm#1045936
分享到:
- 2009-02-12 19:53
- 浏览 2936
- 评论(0)
- 论坛回复 / 浏览 (0 / 3867)
- 查看更多
相关推荐
SSL双向认证握手过程是SSL/TLS协议中的一种身份验证机制,用于确保客户端和服务器之间的通信安全。本文将详细介绍SSL双向认证握手过程的每个步骤,并解释相关的数据结构和加密算法。 第一步:ClientHello 在SSL...
SSL 握手协议是 SSL 协议的核心组件之一,它负责客户端和服务器之间的身份认证和加密通信。在 SSL 握手协议中,客户端和服务器之间进行了多次交互,以确保身份认证和加密通信的安全性。 SSL 握手协议的主要过程包括...
在SSL握手过程中,客户端和服务器通过一系列步骤生成最终的会话密钥。这些步骤包括: 1. **随机数交换**:客户端和服务器各自生成随机数,并通过握手消息进行交换。 2. **预主密钥(Pre-Master Secret)**:客户端...
TLS/SSL握手过程是建立安全连接的关键步骤,它涉及到双方身份验证、协议版本选择、加密套件和压缩方法的协商以及密钥的生成。这个过程通常包括以下几个子步骤: (1) 客户端Hello:客户端首先发送一个Client Hello...
总的来说,SSL协议通过复杂的握手过程确保了通信双方的身份认证、密钥协商以及数据加密,从而提供了一个安全的通信环境,保护了用户的隐私和敏感信息。对于开发者来说,理解和掌握SSL的通信过程对于构建安全的网络...
4. 执行SSL握手过程,验证服务器的证书。 5. 安全地读写数据。 在提供的文件中,"sslserver"可能是一个实现了SSL服务器的示例代码,"securesocketclient"可能是SSL客户端的代码。"sslcert"文件可能包含了服务器的...
SSL握手协议是安全套接字层(Secure Sockets Layer)的核心组成部分,用于在客户端和服务器之间建立安全的通信通道。其主要目标是确保双方的身份认证、协商加密算法以及交换会话密钥。SSL握手协议包括多种不同的握手...
SSL/TLS 是互联网上广泛采用的安全通信协议,确保数据在网络传输过程中保持私密性和完整性。 首先,让我们了解 SSL/TLS 的基本概念。SSL/TLS 提供了服务器身份验证、客户端身份验证以及数据加密。在双向认证中,...
4. **握手过程**:SSL/TLS连接建立时,客户端和服务器会通过“握手”协议协商加密套件和其他安全参数。这个过程涉及证书验证、密钥交换和协议版本协商,SSL Digger可以帮助诊断握手过程中的问题。 5. **安全协议...
SSL(Secure Sockets Layer)双向认证,也称为mutual SSL,是一种网络安全协议,它要求客户端和服务器双方在建立连接时都提供身份证明。这增强了通信的安全性,因为双方都需要验证对方的身份,防止中间人攻击和其他...
7. **SSL握手**:在SSL连接建立时,客户端和服务器会进行一系列的握手步骤,包括证书交换、密钥协商等,以确保双方的身份都被正确验证。 8. **错误处理**:在实施过程中,可能会遇到如证书未找到、证书不受信任、...
2. **握手过程**:SSL握手过程包括几个步骤:客户端发送加密套件的选择,服务器回应接受的套件并发送其证书,如果需要客户端认证,服务器会发送一个“证书请求”消息,客户端接着发送它的证书,然后双方交换预主密钥...
5. **握手过程**:当Socket建立连接后,SSL/TLS会进行握手过程,互相交换证书并验证对方身份。 在`TestJava`这个示例中,可能包含了实现上述步骤的Java代码。代码可能涉及了`KeyStore`、`KeyManagerFactory`、`...
例如,`SSL_set_connect_state`和`SSL_do_handshake`等函数用于初始化和执行握手过程。OpenSSL还提供了一系列API供开发者使用,使得开发者能够灵活地控制握手过程的不同方面。 ### 五、OpenSSL与SSL协议对应关系 ...
SSL握手协议是SSL/TLS协议中的一项关键组件,它负责在客户端和服务器之间建立一个安全的连接。此过程涉及到一系列复杂的交互步骤,目的是为了确保双方能够达成一致的加密方式,并完成身份验证。 ##### 2.1 握手协议...
3. **SSL握手过程**:详述SSL连接建立的步骤,包括客户端发起请求、服务器发送证书、密钥交换、握手确认等环节,帮助理解SSL如何保证通信的安全。 4. **TLS与SSL的关系**:由于SSL已更新到TLS(Transport Layer ...
5. **SSL连接建立**:当客户端和服务器建立连接时,会进行SSL握手过程。这个过程中,客户端会验证服务器的身份,服务器也会验证客户端的身份。如果双方的证书被对方的TrustKeyStore所信任,那么连接才会建立成功,...
在Java中,实现基于SSL/TLS的FTP客户端需要创建`SSLSocket`连接到服务器,并进行必要的握手过程。服务器端则需创建`SSLServerSocket`来监听连接,并处理客户端的认证请求。整个过程涉及SSL/TLS的初始化、证书管理、...
4. **握手过程**:SSL/TLS通信始于握手阶段。客户端发送“ClientHello”消息,包含支持的协议版本、加密套件列表和随机数。服务器回应“ServerHello”,选择共同支持的协议和加密套件,并发送其证书。之后,双方协商...