我有一个 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