9

我正在尝试整理我对数字签名和加密的使用。我知道有两种主要方法可以做到这一点:PGP 方式和 SSL 方式。

我想知道是否可以为 SSL 证书和 GnuPG 使用相同的私钥,前提是这是一个 RSA 2048 位密钥。

我已经有一个由 CA 签名的 SSL 证书,所以我希望将该证书的私钥用作 GnuPG 主私钥。

我知道我们不能以这种方式在 SSL 和 GnuPG 之间进行断言,但我希望只有一个私钥(因此只需要保护一份数据)

谢谢

4

1 回答 1

12

你可以这样做,但这不一定是好的做法。

首先,当您说“SSL 证书”时,您可能指的是“X.509 证书”。SSL/TLS 大部分时间都使用 X.509 证书,但它也可以使用OpenPGP 证书(据我所知,只有 GnuTLS 支持它们)。

请注意,我还使用了“OpenPGP 证书”这一表述。大多数人称它们为“(Open)PGP 公钥”,但它们实际上是证书:它们是公钥、标识符和一些属性的组合,由其他实体签名,并附上他们的签名,以便形成整体证书。严格来说,它不仅仅是一个公钥。

X.509 证书和 PGP 证书的主要区别在于 X.509 只能有一个签名(颁发者的签名),而 PGP 证书可以添加多个签名。(PGP 模型可用于分层 PKI 模型,而 PKI 模型不能用于处理 Web-of-Trust 模型。)

此 Java 代码演示了如何将一组 PGP 密钥“转换”为自签名 X.509 证书。原则上,您也可以将其转换为 CSR 以从 CA 获取 X.509 证书。这样做是否是一个好主意是另一回事。

首先,偶尔重新生成新的密钥对通常是个好主意。通常,这就是用于 SSL 的 X.509 证书具有有效期结束日期的原因之一(PGP 签名也可以在时间上受到限制)。

您还可以有效地将所有鸡蛋放在同一个篮子中。如果其中一个密钥被泄露,您的 X.509 和 PGP 证书都会被泄露。

更重要的是,重复使用相同的密钥进行签名和加密被认为是不好的做法:将它们用于两个不同的应用程序(SSL/TLS 和 GnuPG)只会使问题变得更糟。

于 2012-03-07T11:19:19.760 回答