2016-06-09 54 views
3

我创建了一个调用server-rest-api(单向调用)的client-rest-api。我的client-rest-api使用由server-rest-api发布的证书。但是我的客户端rest-api从来没有向server-rest-api发出任何证书。它是根据单向SSL还是双向SSL?双向SSL或单向SSL在单向休息时调用?

事件虽然它只是从客户端到服务器的单向调用,但我认为它是双向ssl,因为在这里server-rest-api验证客户端是否具有由服务器发出的正确证书?

回答

5

单向SSL身份验证是指客户端只验证服务器的证书。这种验证是为了确保它是预期的服务器,即没有人处于中间攻击。

如果服务器还验证客户端的证书,双向SSL认证(或更好的相互认证或客户端认证)。这样做是为了使用证书对服务器验证客户端。

这意味着REST是否涉及它并不重要。谁颁发证书也无关紧要。所有重要的是TLS层的通信,例如,如果服务器请求客户端证书并且客户端发送它。由于从描述中可以看出后者是双向SSL身份验证。但我真的推荐称之为“相互认证”或“客户端认证”,因为这样可以减少实际做到的事情。

+0

我的困惑源于这样的事实:我确信服务器正在验证我的客户端,但不确定我的java客户端是否正在验证服务器。我不需要从服务器获得证书,并将其放入我的客户端信任库中以信任其预期的服务器? –

+0

我的困惑源于这样的事实:我确信服务器正在验证我的客户端,但不知道我的java客户端是否正在验证服务器。我不需要从服务器获得证书并将其放入我的客户端信任库以信任其服务器? –

+1

@HimalayMajumdar:客户端需要始终对服务器进行身份验证,否则中间的人将成为可能。这种认证几乎总是通过证书来完成的。如果服务器证书由客户端信任的CA颁发,则您不需要将服务器证书导入客户端信任存储区,这与浏览器不知道互联网上的所有证书相反,只是相信发布者CA. –