【问题标题】:How do client certificates work?客户端证书如何工作?
【发布时间】:2014-05-08 21:36:46
【问题描述】:

我正在与 REST 服务提供商合作,他们希望我在进行 HTTP 调用时使用他们提供的客户端证书。

客户端证书如何实现身份验证?
如果有人拥有客户端证书的副本,他们也可以通过身份验证吗?
除了身份验证之外,客户端证书是否提供其他任何功能?
它们与用户名/密码身份验证有何不同?

【问题讨论】:

    标签: ssl certificate client-certificates


    【解决方案1】:

    客户端证书如何实现认证?

    由对等信任的人签名(包括自签名),或由对等信任的人信任的人签名,等等。

    如果有人拥有客户端证书的副本,他们也可以通过身份验证吗?

    错了。他们还需要私钥。

    客户端证书是否提供除了身份验证之外的任何其他功能?

    没有。

    它们与用户名/密码身份验证有何不同?

    更安全。无法猜测密码。

    但是没有“他们提供的客户证书”之类的东西。生成客户端证书的过程始于您。您生成一个密钥对和一个证书签名请求 (CSR),并由 CA 对其进行签名。或者您生成自签名证书。 然后向他们提供您的证书。如果他们提议执行所有这些步骤并向您提供生成的密钥对和证书,他们不知道自己在说什么,应该因违反安全规定而受到严厉惩罚。只有在没有其他人拥有副本的情况下,私钥才是私有的。

    【讨论】:

    • 谢谢。客户端通过证书提供公钥后,服务器如何对客户端进行身份验证?换句话说,客户端证书的私钥是做什么用的?
    • 客户不仅提供他的证书,而且还提供由他的私钥签名的证书(和其他一些东西)的数字签名。服务器使用公钥进行验证。这证明客户端拥有该证书,但前提是没有其他人拥有或曾经拥有访问私钥的权限。这就是为什么“由他们提供”是完全无效和不安全的。他们不能在没有私钥的情况下生成证书,如果他们生成私钥,它就不是私有的。
    • SSL 证书与用户名/密码没有太大区别。它们都是你知道的东西,其他人不应该知道。 SSL 证书,其核心只是一个非对称密钥对(公钥/私钥);它可以像用户名/密码对一样被暴力猜测。
    • @Granger 有很大的不同。 SSL证书不是秘密,别人签名的证书也承载着别人对你身份的验证。
    • @Granger 你可以考虑你喜欢的,但是从服务器发送到客户端的SSL证书不包含私钥。
    猜你喜欢
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 2015-09-06
    • 2011-05-04
    • 2013-09-03
    • 2017-10-03
    • 2017-01-02
    相关资源
    最近更新 更多