从DSA私钥获取证书

从DSA私钥获取证书

我有一个 PEM 格式的私人 DSA 密钥,其中包含以下内容:

-----BEGIN DSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,XXXXXXXXXX

xxxx....
-----END DSA PRIVATE KEY-----

我需要用这个私钥生成一个公共证书。

我可以将其转换为以下格式的公钥:

-----BEGIN PUBLIC KEY-----
xxxx....
-----END PUBLIC KEY-----

使用openssl dsa -in private-key.pem -pubout但似乎无法从中获取证书。我的理解是私钥包含证书附加信息,因此我应该能够以某种方式提取它。

我需要的格式是

-----BEGIN CERTIFICATE-----
xxxx....
-----BEGIN CERTIFICATE-----

我是否从根本上误解了某事?

答案1

我的理解是私钥包含证书和附加信息......

抱歉,这不正确。

在非对称密钥文件中,私钥包含公钥(或者,对于 DSA,包含足够的数据来重建公钥),但证书则完全不同。

证书是 A) 公钥,B) 有关公钥所有者的一些信息,C) 有关谁证明该信息真实(足够)的一些信息,D) 来自 (C) 的签名。

拥有证书后,您只能在拥有私钥的情况下在 TLS 等协议中使用它,但您需要这两个部分,“BEGIN CERTIFICATE”部分和“BEGIN PRIVATE KEY”部分都无法产生另一个部分。(好吧,如果有足够的(量子)计算能力,您可以从证书中恢复私钥,但这被认为“难以实现”)。

我需要用这个私钥生成一个公共证书。

您可以通过以下命令从密钥生成自签名证书

openssl req -new -x509 -key private.key -out new.cer

如果您需要它成为受信任的证书,您可以创建一个认证请求(“证书签名请求”,CSR)并将其提交给 CA。

openssl req -new -key private.key -out new.csr

相关内容