drs*_*drs 212 certificate ssl ssl-certificate
每当我试图了解有关 SSL 的任何内容时,我总是很难跟踪“密钥”和“证书”所指的内容。我担心很多人会错误地或互换地使用它们。密钥和证书之间有标准区别吗?
Law*_*ceC 194
证书包含一个公钥。
除了包含公钥之外,证书还包含其他信息,例如颁发者、证书的用途以及其他类型的元数据。
通常,证书本身由证书颁发机构 (CA) 使用 CA 的私钥进行签名。这将验证证书的真实性。
And*_*ejs 135
这两张照片一起向我解释了一切:
来源:linuxvoice
资料来源:信息安全研究所
Moh*_*ari 49
假设 A 公司有一个密钥对,需要发布他的公钥以供公众使用(在他的网站上也就是 ssl)。
因此,使用有效 CA 的私钥签名的公司 A 的公钥称为公司 A 的证书。
Udd*_*tam 18
让我用一个例子来解释。
在普通的基于密钥对的 PKI 中,有私钥和公钥。
在基于证书的系统中,有私钥和证书。证书包含比公钥更多的信息。
Demo(可以生成证书和私钥):http : //www.selfsignedcertificate.com/
您可以下载打开私钥文件和证书文件,您会看到证书文件包含如下所示的很多信息。

您可以从以下站点匹配生成的证书(由文本编辑器打开)和私钥(由文本编辑器打开):https : //www.sslshopper.com/certificate-key-matcher.html
如果证书与客户端的私钥匹配,则客户端可以确定该证书是由客户端提供的还是由客户端的可信代理 (CA) 提供的。
但是,只有私钥和基于证书的通信存在问题。
因为,任何人都可以生成自己的证书和私钥,因此除了服务器知道与证书公钥匹配的私钥之外,简单的握手并不能证明有关服务器的任何信息。解决此问题的一种方法是让客户端拥有一组它信任的一个或多个证书。如果证书不在集合中,则该服务器不可信。
这种简单的方法有几个缺点。随着时间的推移,服务器应该能够升级到更强的密钥(“密钥轮换”),这将用新的公钥替换证书中的公钥。不幸的是,由于本质上是服务器配置更改,现在必须更新客户端应用程序。如果服务器不受应用程序开发人员的控制,例如,如果它是第三方 Web 服务,则这尤其成问题。如果应用程序必须与任意服务器(例如 Web 浏览器或电子邮件应用程序)通信,则此方法也存在问题。
为了解决这些缺点,服务器通常配置有来自称为证书颁发机构 (CA) 的知名颁发机构的证书。主机平台(客户端)通常包含它信任的众所周知的 CA 列表。与服务器类似,CA 具有证书和私钥。为服务器颁发证书时,CA 使用其私钥对服务器证书进行签名。然后,客户端可以验证服务器是否具有由平台已知的 CA 颁发的证书。
然而,在解决一些问题的同时,使用 CA 引入了另一个问题。因为 CA 为许多服务器颁发证书,所以您仍然需要某种方式来确保您正在与所需的服务器通信。为了解决这个问题,CA 颁发的证书使用特定名称(例如 gmail.com)或通配符集(例如 *.google.com)来标识服务器。
下面的例子将使这些概念更加具体一些。在下面的命令行片段中,openssl 工具的 s_client 命令查看维基百科的服务器证书信息。它指定端口 443,因为这是 HTTPS 的默认端口。该命令将 openssl s_client 的输出发送到 openssl x509,后者根据 X.509 标准格式化有关证书的信息。具体来说,该命令要求提供包含服务器名称信息的主题和标识 CA 的颁发者。
$ openssl s_client -connect wikipedia.org:443 | openssl x509 -noout -subject -issuer
subject= /serialNumber=sOrr2rKpMVP70Z6E9BT5reY008SJEdYv/C=US/O=*.wikipedia.org/OU=GT03314600/OU=See www.rapidssl.com/resources/cps (c)11/OU=Domain Control Validated - RapidSSL(R)/CN=*.wikipedia.org
issuer= /C=US/O=GeoTrust, Inc./CN=RapidSSL CA
Run Code Online (Sandbox Code Playgroud)
您可以看到该证书是由 RapidSSL CA 为与 *.wikipedia.org 匹配的服务器颁发的。
如您所见,由于 CA 向服务器发送了这些附加信息,客户端可以轻松知道它是否正在与其服务器进行通信。
| 归档时间: |
|
| 查看次数: |
200252 次 |
| 最近记录: |