我正在整理我的数字签名和加密使用方式。 我了解到有两种主要方法:PGP方式和SSL方式。
我想知道是否可以使用相同的私钥用于SSL证书和GnuPG,只要这是一个RSA 2048位密钥。
我已经拥有一个由CA签名的SSL证书,因此希望使用该证书的私钥作为GnuPG主私钥。
我知道我们不能以这种方式在SSL和GnuPG之间进行断言,但我想只有一个私钥(因此只需保护一个数据片段)。
谢谢
我正在整理我的数字签名和加密使用方式。 我了解到有两种主要方法:PGP方式和SSL方式。
我想知道是否可以使用相同的私钥用于SSL证书和GnuPG,只要这是一个RSA 2048位密钥。
我已经拥有一个由CA签名的SSL证书,因此希望使用该证书的私钥作为GnuPG主私钥。
我知道我们不能以这种方式在SSL和GnuPG之间进行断言,但我想只有一个私钥(因此只需保护一个数据片段)。
谢谢
虽然你可以这样做,但这不一定是好的实践。
首先,当你说“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)中使用它们只会使问题更加严重。