OpenSSL中自签名证书的含义是什么?

时间:2012-04-28 07:41:57

标签: ssl cryptography openssl ssl-certificate

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

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

3 个答案:

答案 0 :(得分:5)

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

X.509证书同时包含发行人和主题。主题是表示该证书识别的人员或内容的标识符(以及与该证书中的公钥匹配的私钥的拥有者或拥有者)。发行者代表使用其私钥签署此证书的人或组织的标识符。

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

对于后者,证书用作公钥基础结构(PKI)的构建块。证书颁发机构(CA)是颁发证书的机构:它签署将证书中的公钥绑定到主题的断言。执行此操作时,它会将自己的名称作为颁发者名称放在它发出的证书中。

如果您将证书与护照(将您的照片和姓名捆绑在一起)进行比较,则CA将成为您的护照授权:实际证明护照所说的内容是真实的,以便其他人能够验证

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

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

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

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

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

如果您使用openssl s_client并且看到“链中的自签名证书”或“无法验证证书”这样的消息,则并不一定意味着出现问题,但{{1}默认情况下,不使用预定义的可信CA证书列表。它的大部分命令都有openssl-CAfile等选项,允许您指定您愿意信任的CA证书。

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

(您可能还对this question感兴趣,了解如何使用HTTPS服务器证书。)

答案 1 :(得分:2)

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

“CA”或证书颁发机构是颁发证书的公司。在可信证书的情况下,它就是那个公司 - 例如威瑞信。如果是自签名证书,CA就是您 - 您已颁发证书。

答案 2 :(得分:0)

自签名证书会导致某种“不受信任的”#34;在大多数浏览器中提醒,询问您是否要继续并添加例外等。这并不意味着连接不那么安全 - 它仍然是通过SSL。

一般情况下,CA会收取费用,但如果您搜索,则会收取一些免费费用。