如何让客户端首先进行身份验证?

时间:2012-01-11 18:45:37

标签: security ssl

我需要一个安全协议,客户端在服务器之前进行身份验证。这是必要的,因为它是隐私问题。除非他们被允许知道,否则我不希望任何未知方知道他们要联系谁。在TLS协议中,服务器首先发送他的证书,从而消除这种可能性。我知道实现自己的协议是一个坏主意。但是,有选择吗?即有没有办法改变协议以其他顺序发送证书? Wikipidea对TLS的引用:http://en.wikipedia.org/wiki/Transport_Layer_Security#Client-authenticated_TLS_handshake

1 个答案:

答案 0 :(得分:1)

您可以撤消客户端和服务器的角色。

通常情况下,使用TCP,客户端是执行connect()(并发送SYN)的端点,服务器是执行accept()的端点(它接收到SYN并发送回SYN | ACK)。但是一旦建立连接,客户端的套接字和服务器套接字之间就不再有任何区别。

如果您正在使用OpenSSL,则通常在成功SSL_connect()后致电connect(),并且通常在成功SSL_accept()后致电accept()。但是,如果您翻转它并在客户端SSL_accept()之后调用connect()并在服务器端SSL_connect()之后调用accept(),OpenSSL将永远不会知道其中的区别。并且客户端将充当TLS服务器并首先识别自己。