5

我是OpenSSL工具的初学者。我不明白一些概念。你能给我解释一下这些概念吗?我想了解诸如CASelf-Signed Certificate任何概念以便更好地理解。

(对不起,如果我使用了错误的术语或语法,我正在学习英语。)

4

3 回答 3

5

证书的目的是以您可以验证的方式声明一条信息。公钥证书,在此上下文中更具体地说是 X.509 证书,断言公钥、标识符(主题可分辨名称和/或主题备用名称)和各种其他属性之间的绑定。总之,对这些信息进行签名以形成证书。

X.509 证书同时具有颁发者和主题。主题是表示该证书标识谁或什么(以及谁或什么拥有与该证书中的公钥匹配的私钥)的标识符。颁发者代表使用其私钥签署此证书的个人或组织的标识符。

证书的使用可以大致分为两个不同的类别:用于特定应用程序或服务的证书(例如验证 SSL/TLS 服务器),以及用于证明其他证书有效性的证书。

对于后者,证书被用作公钥基础设施 (PKI) 的构建块。证书颁发机构 (CA) 是颁发证书的机构:它签署将证书中的公钥绑定到主题的断言。这样做时,它将自己的名称作为颁发者名称放入其颁发的证书中。

如果您将证书与护照(将您的照片和您的姓名绑定在一起)进行比较,那么 CA 将是您的护照授权机构:那些真正证明护照内容真实的人,以便其他人能够验证它。

信任 CA 允许您信任它颁发的证书。您可以在您信任的 CA 和您以前从未见过的 CA 颁发的证书之间建立信任链。

随之而来的是一个“引导”问题:您如何信任 CA 本身?

自签名证书是颁发者和主体相同的证书;它们使用与其包含的公钥匹配的私钥进行签名。他们处于信任链的顶端。它们往往是 CA 证书(除非为特定服务定制,如果没有外部验证,您将无法信任该证书)。

CA 证书是可用于颁发/验证其他证书的证书。(如果它们位于根/自签名 CA 证书和您希望验证的证书之间的链中间,则它们可以是中间 CA 证书。)定义如何使用证书来验证其他证书的规则在PKIX 规范 (RFC 3280/5280)

默认情况下,浏览器和操作系统附带一个预先安装的 CA 证书列表。这些主要是商业 CA,它们检查证书中有关服务的信息,通常是收费的。相反,您可以信任他们颁发的证书的内容(大多数时候,这不是一个完美的系统)。这里涉及到“信仰的飞跃”,因为您需要相信浏览器/操作系统只包含有信誉的 CA 证书。

如果您使用openssl s_client并看到诸如“链中的自签名证书”或“无法验证证书”之类的消息,这并不一定意味着出现问题,而是openssl未使用预定义的受信任 CA 列表默认证书。它的大多数命令都有一个选项,例如-CAfileCApath允许您指定您愿意信任的 CA 证书。

服务的自签名证书是一种特殊情况,即服务自行声明其内容。您通常无法验证此类证书的真实性,除非您有外部信任它的方式(例如,如果您自己将其安装在机器上并手动更改检查其内容,或者如果您信任的人提供了它给你)。

(您可能还对这个关于如何使用 HTTPS 服务器证书的问题感兴趣。)

于 2012-04-28T16:30:23.557 回答
2

一般来说,证书的目的是建立信任链:“我信任这家第三方公司,他们信任你,所以我可以信任你。” 自签名证书意味着您自己生成了它,因此我真的不信任您。(这些非常适合测试,但仅此而已。)另一种类型是受信任的证书,通过让信誉良好的公司向您出售证书(如 Verisign)获得。这是一个商品市场,因此它们的价格在公司之间非常一致。它确实取决于预期用途和证书的范围。(例如,用于签署 Android 应用程序的证书与用于验证https://www.example.com/的证书非常不同。)

“CA”或证书颁发机构是颁发证书的公司。在可信证书的情况下,它是那家公司——例如 Verisign。在自签名证书的情况下,CA 是您——您颁发了证书。

于 2012-04-28T07:55:59.223 回答
0

自签名证书会在大多数浏览器中引起某种“不受信任”警报,询问您是否要继续并添加异常等。但这并不意味着连接的安全性降低——它仍然通过 SSL。

一般来说,CA 是收费的,但如果你搜索的话,周围有一些免费的。

于 2012-04-28T08:04:00.217 回答