我想知道自签名和证书颁发机构生成的证书之间的区别。
我可以轻松地为域xyz.com创建自签名证书,那么此证书与CA生成的证书之间有什么区别?
方案
假设网站 xyz.com 受到颁发给 xyz.com 的证书的保护,并且具有该网站颁发的证书的客户可以访问该网站。
我还可以为 xyz.com 创建自签名,然后我的服务器将如何处理这个假证书?
答案 0 :(得分:7)
如果您的浏览器中已安装了CA的证书,那么当您的浏览器遇到声称由某个CA签名的证书时,它可以验证该证书确实已由该CA签名。在签署证书之前,CA本身通常会以某种方式验证您的身份。
您的自签名证书仅由您自己的CA签名。没有人证实该证书实际上属于它声称属于的人。您可以将自己的CA根证书安装到浏览器中。这样你就不会收到有关证书的恼人的警告信息。其他用户通常不会安装您自己的CA根证书,但仍会收到警告。
答案 1 :(得分:3)
证书本身没有区别。重要的是,CA充当可信赖的第三方。即客户可能不知道您是谁,但如果他们信任CA,并且CA为您担保,那么他们可以信任您。它不是证书本身,而是CA提供的信任链。
答案 2 :(得分:2)
CA还会对您说的是您所做的一些验证,因此他们在使用网站时会增加额外的信心。自签名证书可能也不会在客户端的浏览器上获得完整的“挂锁”。
答案 3 :(得分:1)
为了完成其他答案,操作系统预装了一些来自Microsoft或其他受信任机构的根证书。如果您的证书由其中一个签署,则不会显示任何警告。如果证书由操作系统无法识别的CA签名,则会显示警告。
答案 4 :(得分:0)
自签名证书与CA颁发的证书之间的主要区别在于信任链。如果您签署自己的证书,那么当您或其他人使用它时,他们必须特别信任您签署证书的服务器。执行此操作的方法是将证书添加到浏览器中的“可信CA根”列表(即Firefox或Microsoft的MSIE或Chrome的CAPI存储)或Java应用程序的cacerts
文件中。否则,您的自签名证书将不受信任,您将收到“警告”或错误消息,具体取决于您的安全设置在该环境中的严格程度(即Java或您的特定浏览器)。
使用由CA签名的证书,如果签署证书的CA或CA的受信任Root(签署该CA证书的CA)已存在于您的相关信任库中,则不会收到该警告(即浏览器或Java的cacerts
文件。 Microsoft和Oracle(针对Java)不断更新受信任的CA并管理CRL(证书撤销列表),用于CA或已被泄露或被撤销的权限。
通常,其中一个受信任的CA(如verisign,委托等)向$$收取签名和签发证书的费用,有效期越长,收费越多。
自签名的是免费的,可能会被发出很长一段时间(虽然不推荐)。