当我使用自签名证书时,我创建了一个自我CA.cer和一个server.cer,server.cer用于Web服务,并且在客户端代码中添加了自我CA.cer。当我检查证书时,我检查server.cer是否来自这个自我CA.cer,对吗? 但是,如果我购买CA证书,我唯一得到的是从CA生成的server.cer,对吗?和CA证书可以生成许多server.cer,它们都是可信的,我得到的就是这些。 在我的客户端代码中,其他人说我只需要在购买CA后将我的http更改为https。但是如何区分哪个服务器证书和我自己的服务器?我只想信任来自我自己服务器的服务器证书。
答案 0 :(得分:0)
如果我购买CA证书
您无法购买CA证书(除了少数例外情况,这不是您的情况)。您正在购买不能用于签署其他证书的终端实体证书。它由Basic Constraints
证书控制。由于基本约束扩展值(isCA
属性设置为False
),任何标准验证代码都将拒绝由非CA证书签名的任何证书。
答案 1 :(得分:0)
如果您信任CA,则您信任他们发布的所有证书(除非已过期或已撤销) - 这就是PKI的工作方式。
如果该CA向其他站点/服务器颁发证书,和您与这些其他站点/服务器建立HTTPS(或其他SSL / TLS或DTLS)连接,将信任他们的证书,从而信任他们。
但是,如果您的意思是您只想信任为您的服务器发送到您的服务器的特定证书,那就是自动的。颁发给您服务器的证书中包含您的域名,而颁发给其他服务器的证书具有(不同的)名称,而像浏览器这样的HTTPS客户端只信任由受信任的CA 颁发的证书。 中包含正确的服务器名称,因此它只信任您的服务器的证书,并且只信任那些颁发证书的其他服务器的其他证书。
有关详细信息,请参阅Stack的Great Ursine Epic https://security.stackexchange.com/questions/20803/how-does-ssl-work/