SSL 证书究竟是如何验证的?
How exactly is a SSL certificate validated?
我已经对此进行了一些研究,但在验证签名和根证书方面,关于当服务器将其证书发送给客户端时到底发生了什么,仍然很难将这些点联系起来。
当你创建一个CSR时,它会生成一个私钥,你将它发送给CA生成证书并签名,但CA不使用它自己的私钥签名的关键?那么,您使用 CSR 生成的私钥有什么意义?
当服务器将其证书发送给客户端进行验证时,客户端究竟如何验证它是一个有效的 CA 证书。它有一组受信任的 CA 证书,好的 - 但它们究竟是如何用来验证它是使用服务器证书的签名和 public 密钥签署服务器证书的有效 CA?比较什么东西是不是伪造的?
加密内部自签名证书有什么意义吗?内部根证书怎么样?还是只有私钥值得加密?
例如,如果我们不为我们的 Web 服务(通过 SSL)保留加密数据的数据库,那么一旦我们生成了自签名证书,我们是否会关心存储我们自己的私钥,如果我们这样做,他们为什么?
When you create a CSR, it generates a private key along with it
或者您已经生成了自己的私钥。
and you send it to the CA to generate the cert and sign it
您发送 CSR。你不发送你的私钥。这是私人的。您不会将其发送给任何人。
but doesn't the CA use it's own private key to sign?
是的。
So what is the point of the private key you generated with your CSR?
它与证书中包含的 public 密钥配对,它是用于证明您且只有您拥有该证书的过程的一部分,因为只有您可以使用该私钥生成数字签名可以通过证书中的 public 密钥进行验证。
When server sends its certificate for client to validate, how exactly does client validate that it is a valid CA cert. It has a collection of trusted CA certs, ok - but how exactly are they used to verify that it was a valid CA that signed the server's certificate using the signature and public key of the server certificate? What things are compared to make sure it was not forged?
通过验证其数字签名来验证证书本身;检查是否在有效期内;然后尝试使用证书的所谓签名者('issuer')和集合中的受信任证书来形成证书链。
Is there any point in encrypting your internal self signed certs?
没有。它们是 public 个文档。只有私钥是私钥,不在证书中。
How about an internal root cert?
没有
Or is the private key the only one worth encrypting?
是的。
If we don't keep a database of encrypted data for our web service (over SSL) for example, would we ever care about storing our own private key once we generated the self signed cert, and if we do, they why?
因为它是私人的。这是您身份的重要组成部分。如果你泄漏它,其他人可以冒充你。
我已经对此进行了一些研究,但在验证签名和根证书方面,关于当服务器将其证书发送给客户端时到底发生了什么,仍然很难将这些点联系起来。
当你创建一个CSR时,它会生成一个私钥,你将它发送给CA生成证书并签名,但CA不使用它自己的私钥签名的关键?那么,您使用 CSR 生成的私钥有什么意义?
当服务器将其证书发送给客户端进行验证时,客户端究竟如何验证它是一个有效的 CA 证书。它有一组受信任的 CA 证书,好的 - 但它们究竟是如何用来验证它是使用服务器证书的签名和 public 密钥签署服务器证书的有效 CA?比较什么东西是不是伪造的?
加密内部自签名证书有什么意义吗?内部根证书怎么样?还是只有私钥值得加密?
例如,如果我们不为我们的 Web 服务(通过 SSL)保留加密数据的数据库,那么一旦我们生成了自签名证书,我们是否会关心存储我们自己的私钥,如果我们这样做,他们为什么?
When you create a CSR, it generates a private key along with it
或者您已经生成了自己的私钥。
and you send it to the CA to generate the cert and sign it
您发送 CSR。你不发送你的私钥。这是私人的。您不会将其发送给任何人。
but doesn't the CA use it's own private key to sign?
是的。
So what is the point of the private key you generated with your CSR?
它与证书中包含的 public 密钥配对,它是用于证明您且只有您拥有该证书的过程的一部分,因为只有您可以使用该私钥生成数字签名可以通过证书中的 public 密钥进行验证。
When server sends its certificate for client to validate, how exactly does client validate that it is a valid CA cert. It has a collection of trusted CA certs, ok - but how exactly are they used to verify that it was a valid CA that signed the server's certificate using the signature and public key of the server certificate? What things are compared to make sure it was not forged?
通过验证其数字签名来验证证书本身;检查是否在有效期内;然后尝试使用证书的所谓签名者('issuer')和集合中的受信任证书来形成证书链。
Is there any point in encrypting your internal self signed certs?
没有。它们是 public 个文档。只有私钥是私钥,不在证书中。
How about an internal root cert?
没有
Or is the private key the only one worth encrypting?
是的。
If we don't keep a database of encrypted data for our web service (over SSL) for example, would we ever care about storing our own private key once we generated the self signed cert, and if we do, they why?
因为它是私人的。这是您身份的重要组成部分。如果你泄漏它,其他人可以冒充你。