GnuPG/PGP和SSL:共享相同的私钥



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

我想知道的是,如果这是RSA 2048位密钥,是否可以对SSL证书和GnuPG使用相同的私钥。

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

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

感谢

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

首先,当你说";SSL证书";,你可能是说";X.509证书";。SSL/TLS大多数时候使用X.509证书,但它也可以使用OpenPGP证书(据我所知,只有GnuTLS支持它们)。

注意,我还使用了表达式";OpenPGP证书";。大多数人称他们为";"(打开)PGP公钥";,但它们实际上是证书:它们是公钥、标识符和一些属性的组合,由附加签名的其他实体签名,从而形成整个证书。严格来说,它不仅仅是一个公钥。

X.509证书和PGP证书之间的主要区别在于,X.509只能有一个签名(颁发者的签名),而PGP证书上可以添加多个签名。(PGP模型可以用于类似PKI的分层模型,而PKI模型不能用于处理信任网络模型。)

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

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

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

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

最新更新