当我需要在进行SSL调用时使用SSL私钥

时间:2016-10-30 20:17:59

标签: ssl curl https wget

很抱歉,如果这听起来像转储问题,我一直在阅读很多关于SSL握手的帖子和文档以及SSL的工作原理。我对一件事感到困惑,如果有人能澄清我的话会很棒。

我知道私钥应该保密。但我已经看到通过在请求中指定私钥来进行一些GET / POST调用(使用curl或wget), 例如,如果我的服务器DNS是example.com,并且我使用wget进行SSL调用:

wget --ca-cert=/etc/certs/ca.crt --certificate=/etc/certs/cert.crt --private-key=/etc/cert/private/privatekey.key --header="Content-Type: application/json" --post-data='{"key":"val"}' https://example.com/test

但是当我们通过浏览器打开SSL网页(比如通过chrome打开gmail)时,我们永远不必使用私钥,或者浏览器不知道私钥。在握手过程中,浏览器获取服务器公共证书&然后CA加密随机数以发送回服务器以打开SSL会话。

我知道我错过了一些愚蠢的事情并且感到困惑。有人可以告诉我何时有人必须在SSL请求中使用私钥?

1 个答案:

答案 0 :(得分:1)

当您需要Mutual Authentication时使用它。以及要求服务提供商支付证书等的标准服务器身份验证,以及避免MITM攻击。

客户端身份验证向服务器证明客户端的身份。然而,这给用户带来了负担,这通常是不合理的,并且通过用户名/密码或客户等的oauth令牌来满足。

客户端身份验证可以是可选的,并且可以回退到其他方法。