【发布时间】:2017-03-13 00:09:18
【问题描述】:
对不起,如果这听起来像是转储问题,我一直在阅读很多关于 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 请求中使用私钥吗?
【问题讨论】: