TLS双向认证的实现

netcap 发布于 2012/07/03 16:24
阅读 2K+
收藏 0

   TLS双向认证,其中服务器对客户端的认证(cerificate_requst这个参数是可选的),我想问的是,这个可选参数是怎么实现的,服务器端代码写死了,还是可以设置参数触发?或者是根据客户端的数据包来确定的?

    现在我是在设置asterisk对话机的认证,一直都无法实现,只能实现话机对服务器的认证。

加载中
0
Monkey
Monkey

1.客户端发送请求到服务器。

2.服务导出公共证书(包含公钥)发给客户端。

3.客户端验证公钥,然后导出自己证书,并且产生会话密钥用自己的私钥加密,再把这两个发给服务器。

4.服务器验证客户端证书,然后拿出客户端公钥解密出会话密码。之后再用自己的私钥加密会话密钥,将加密结果发给客户端。

5.客户端拿到会话密钥之后用服务端公钥解密,和之前产生的密钥对比,如果相同则客户端完成验证。

6.客户端用服务器公钥加密会话密钥,发给服务端。

7.服务端用自己私钥解密和之前第一密钥对比,完全服务端的确认,如果相同就意味着建立安全连接。

这个会话密钥就是接下来加密的密钥。

0
n
netcap

那我想问下 在第2步这边,服务器发送自己证书的同时还会发送一个cerificate_requst 和一个hello done包,这个cerificate_requst(有这个的话就是TLS双向认证,没有的话就是单向)是怎么来触发的,在协议中它是可选的。

http://wenku.baidu.com/view/1375620d6c85ec3a87c2c540.html的39页,有关于tls握手cerificate_requst的说明

n
netcap
回复 @Monkey : 现在在第二步,服务器发送证书给客户端,这样也就实现了 客户端对服务器的验证。可是客户端是否发送证书到服务器,这个是由协议中 cerificate_requst 来决定的,这个参数是由谁设置或者说触发的呢?服务器上的配置?客户端上的配置?或者是在服务程序上代码指定的?
Monkey
Monkey
就是让客户端验证服务器,不发就不验证了,服务端只验证客户端。
0
张某君
张某君
在802.1x_TLS中必须使用双向认证.
返回顶部
顶部