GnuPG/PGP和SSL:共享同一私钥?

10

我正在整理我的数字签名和加密使用方式。 我了解到有两种主要方法:PGP方式和SSL方式。

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

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

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

谢谢


证书不是“SSL证书”,与SSL无关(尽管它们可以像OpenPGP密钥一样用于SSL)。 - Eugene Mayevski 'Callback
尽管“只有一个私钥来保护”的想法听起来很不错,但实际上你正在将“一个蛋放在许多篮子里”,反而增加了风险:如果您的Web服务器被黑客攻击,那么您神圣的PGP密钥就会被破解!如果您的笔记本电脑被盗/被破解,那么您现在拥有的密钥可以轻松用于中间人攻击您的网站!最好分开职责。 - JamesTheAwesomeDude
1个回答

13

虽然你可以这样做,但这不一定是好的实践。

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

请注意,我也使用了“OpenPGP证书”这个表达。大多数人称它们为“(Open)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)中使用它们只会使问题更加严重。


谢谢,现在我明白了。是的,我不是一个安全专家,所以我还不熟悉所有术语(SSL、PGP、密钥、X.509)。 - Pedro
只是一点提示:我们的SecureBlackbox也支持在SSL/TLS中使用OpenPGP密钥。 - Eugene Mayevski 'Callback
我也尝试了这种方法,似乎不可能验证自签名的X.509证书是否与特定的OpenPGP密钥相关联(已签名)。 我该怎么做? 这是问题的链接:https://dev59.com/d3jZa4cB1Zd3GeqPfY-K - Daniele Ricci
1
参考我的最后一条评论在这里得到了回答:http://crypto.stackexchange.com/q/11582/9284 - Daniele Ricci

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接