【问题标题】:SSL and certificatesSSL 和证书
【发布时间】:2010-11-24 18:49:24
【问题描述】:
1) 据我所知,在仅需要客户端提供证书的情况下,无法建立 SSL 连接。知道为什么 SSL 不允许这样做吗?
2) 我假设 SSL 连接可以配置为:
- 只需要服务器提供证书
- 要求服务器和客户端都提供他们的证书
3) 可能是一个愚蠢的问题,但是 SSL 如何“知道”哪一侧是客户端,哪一侧是服务器?
4) 是否可以在 SSL 不请求任何证书的情况下建立 SSL 连接?
谢谢
【问题讨论】:
标签:
ssl
certificate
ssl-certificate
【解决方案1】:
如果服务器没有经过身份验证,你真的不能有一个私有通道——中间人很容易窃听,在两个合法方之间中继流量。如果您没有隐私或身份验证,为什么要使用 SSL?实际上存在“匿名”模式,其中使用公钥加密来就加密密钥达成一致,但客户端或服务器都不提供证书;但是,我从未见过它们被使用过,可能是因为它们无法解决中间人窃听攻击。
是的,服务器提供了证书。服务器可以向客户端请求证书。客户端可以使用证书进行响应,也可以忽略该请求。如果请求被忽略,服务器可以选择继续使用匿名客户端,或者终止连接。
客户端和服务器的角色在 SSL 握手期间建立。第一条消息称为ClientHello。发送此消息的一方是客户端。通常,这将是发起 TCP 连接的一方,但不一定是(事实上,SSL 中没有任何东西需要 TCP 作为传输)。
是的,正如我在 #1 中提到的,SSL 具有“匿名”模式,任何一方都无法安全地验证另一方。这将在未知方之间提供一个私有的、防篡改的通道。但是,由于您不知道通道的另一端是谁,因此您不知道这是一个中间人,他同时进行了两次握手并拦截了您和您之间的所有流量你以为你正在与之交谈的一方。为了防止这种情况发生,您必须在 SSL 之上建立一个身份验证协议,为了安全起见,它最终会不可避免地看起来很像经过身份验证的 SSL。
【解决方案2】:
早安,
以下是对您问题的回答:
1) 据我所知,在只要求客户端提供证书的情况下,无法建立 SSL 连接。知道为什么 SSL 不允许这样做吗?
SSL certificate 将保护位于服务器上的网站,并保护用户计算机与网站之间的数据传输。它还取决于证书的类型。
2) 我假设 SSL 连接可以配置为:
只要求服务器提供证书
要求服务器和客户端都提供他们的证书
服务器确实是必要的。但客户端也需要提供 CSR 才能获得特定网站的唯一 SSL 证书。
3) 可能是个愚蠢的问题,但是 SSL 如何“知道”哪一侧是客户端,哪一侧是服务器?
客户端和服务器的验证在 SSL 连接期间完成。当网站的访问者提供重要信息时,只要有 SSL 证书,它就是安全的,但这也取决于安装的证书类型。
4) 是否可以在 SSL 不请求任何证书的情况下建立 SSL 连接?
这取决于证书的类型(自动生成或来自证书颁发机构)。 SSL 证书是唯一的,仅针对特定网站并根据客户提供的 CSR 颁发。
最好的问候,
www.networking4all.fr